ugrás a tartalomhoz

Számlálásos ciklusok egymásba ágyazva elszámolnak

morocztamas · 2012. Már. 29. (Cs), 09.53
Nem a legpontosabb a cím, de mást nem tudtam neki adni.

Szóval. Miért hoz ki nyolcvanhármat, és nem pedig negyvenötöt? A második feladat az, de valami hibát vétettem, amit meg is találtam, csak hogy oldjam meg, hogy működjön?
package nyul;

import java.io.*;
import java.util.Scanner;

public class Nyul {

    public static void main(String[] args) throws FileNotFoundException {
        Scanner s = null;
        int n, l, k;
        int[][] nyulak;
        try {
            s = new Scanner(new BufferedReader(new FileReader("nyul.be")));
            n = s.nextInt();
            l = s.nextInt();
            k = s.nextInt();
            System.out.println("Évek száma:\t\t" + n + "\nLegmagasabb kor:\t" + l + "\nSzaporodhat ekkor már:\t" + k);
            nyulak = new int[l][2];
            for (int i = 0; i < l; i++) {
                for (int j = 0; j < 2; j++) {
                    nyulak[i][j] = (i < k - 1 && j == 1) ? 0 : s.nextInt();
                    System.out.print((j == 0) ? (i + 1) + " éves nyulak száma " + nyulak[i][0] : "\t" + nyulak[i][1] + "\n");
                }
            }
        } finally {
            if (s != null) {
                s.close();
            }
        }

        int szamuk = 0;
        for (int i = 0; i < l; i++) {
            szamuk += nyulak[i][0];
        }
        int ujak = 0;
        for (int i = 0; i < n; i++) { // Eggyel negyvenöt, ami a helyes. Nullával nyolcvanhárom.
            for (int j = 0; j < l; j++) {
                if (j < k - 1) {
                    szamuk += nyulak[j][0];
                } else {
                    szamuk += nyulak[j][0] * nyulak[j][1];
                    ujak += nyulak[j][0] * nyulak[j][1];
                }
            }
            for (int j = l - 1; j >= 0; j--) {
                nyulak[j][0] = (j == 0) ? ujak : nyulak[j - 1][0];
            }
            for (int j = 0; j < l; j++) {
                System.out.println((i + 1) + ". év, " + (j + 1) + ". kor: " + nyulak[j][0]);
            }
            ujak = 0;
        }

        System.out.println("Nyulak száma: " + szamuk);
    }
}
 
1

Kezdd újra

Poetro · 2012. Már. 29. (Cs), 10.20
Mi a 45 és mi a 83? Mi lenne, ha leírnád, hogy mit akar csinálni a kódod, és mi történik helyette. Mert én semmilyen dokumentációt nem látok, se a kódban, se pedig a kérdésfeltevésednél. És azt ugye te is tudod, hogy dokumentáció nélkül a kód nem ér semmit.
2

én nekem fogalmam nincs mi

Karvaly84 · 2012. Már. 29. (Cs), 18.42
én nekem fogalmam nincs mi lehet a probléma, mert nem látom át, de egy breakpoint a kérdéses ciklusban lehet megoldaná a gondot.