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?
  1. package nyul;  
  2.   
  3. import java.io.*;  
  4. import java.util.Scanner;  
  5.   
  6. public class Nyul {  
  7.   
  8.     public static void main(String[] args) throws FileNotFoundException {  
  9.         Scanner s = null;  
  10.         int n, l, k;  
  11.         int[][] nyulak;  
  12.         try {  
  13.             s = new Scanner(new BufferedReader(new FileReader("nyul.be")));  
  14.             n = s.nextInt();  
  15.             l = s.nextInt();  
  16.             k = s.nextInt();  
  17.             System.out.println("Évek száma:\t\t" + n + "\nLegmagasabb kor:\t" + l + "\nSzaporodhat ekkor már:\t" + k);  
  18.             nyulak = new int[l][2];  
  19.             for (int i = 0; i < l; i++) {  
  20.                 for (int j = 0; j < 2; j++) {  
  21.                     nyulak[i][j] = (i < k - 1 && j == 1) ? 0 : s.nextInt();  
  22.                     System.out.print((j == 0) ? (i + 1) + " éves nyulak száma " + nyulak[i][0] : "\t" + nyulak[i][1] + "\n");  
  23.                 }  
  24.             }  
  25.         } finally {  
  26.             if (s != null) {  
  27.                 s.close();  
  28.             }  
  29.         }  
  30.   
  31.         int szamuk = 0;  
  32.         for (int i = 0; i < l; i++) {  
  33.             szamuk += nyulak[i][0];  
  34.         }  
  35.         int ujak = 0;  
  36.         for (int i = 0; i < n; i++) { // Eggyel negyvenöt, ami a helyes. Nullával nyolcvanhárom.  
  37.             for (int j = 0; j < l; j++) {  
  38.                 if (j < k - 1) {  
  39.                     szamuk += nyulak[j][0];  
  40.                 } else {  
  41.                     szamuk += nyulak[j][0] * nyulak[j][1];  
  42.                     ujak += nyulak[j][0] * nyulak[j][1];  
  43.                 }  
  44.             }  
  45.             for (int j = l - 1; j >= 0; j--) {  
  46.                 nyulak[j][0] = (j == 0) ? ujak : nyulak[j - 1][0];  
  47.             }  
  48.             for (int j = 0; j < l; j++) {  
  49.                 System.out.println((i + 1) + ". év, " + (j + 1) + ". kor: " + nyulak[j][0]);  
  50.             }  
  51.             ujak = 0;  
  52.         }  
  53.   
  54.         System.out.println("Nyulak száma: " + szamuk);  
  55.     }  
  56. }  
 
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.