Tableau 3D avec Java (exemple de test de " Java: La référence complète, 9ème édition)


J'essayais de reproduire un code du livre que je lis et je n'arrive pas à le faire fonctionner. Voici le code:

public class ThreeDArray {

public static void main(String[] args) {
    int threeD [][][] = new int [3][4][5];
    int i, j, k;
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 4; j++) {
            for (k = 0; k < 5; k++) {
                threeD [i][j][k] = i*j*k;
            }
        }
        for (i = 0; i < 3; i++) {
            for (j = 0; j < 4; j++) {
                for (k = 0; k < 5; k++) {
                    System.out.print(threeD[i][j][k]+"  ");
                }
                System.out.println("");
            }
            System.out.println("");
        }
    }
}
}

J'obtiens cette sortie:

0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  

0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  

0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  

Je reçois tous les zéros ici et je ne trouve pas l'erreur ici. Veuillez indiquer quel est le problème ici.

Author: fthnm2014, 2015-01-20

1 answers

Mauvais placement de parenthèse: votre deuxième for boucle devrait être en dehors de la première:

int i, j, k;
for (i = 0; i < 3; i++) {
    for (j = 0; j < 4; j++) {
        for (k = 0; k < 5; k++) {
            System.out.printf("%d %d %d %d %n", i, j, k, i * j * k);
            threeD [i][j][k] = i*j*k;
        }
    }
} // move to here ...
for (i = 0; i < 3; i++) {
    for (j = 0; j < 4; j++) {
        for (k = 0; k < 5; k++) {
            System.out.print(threeD[i][j][k]+"  ");
        }
        System.out.println("");
    }
    System.out.println("");
}
// ... from here

Avec la façon dont vous l'aviez, vous incrémentiez i avec votre boucle d'impression, ce qui signifiait que votre première boucle de i quittait la deuxième itération. Maintenant, il imprime:

0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  
0  0  0  0  0  

0  0  0  0  0  
0  1  2  3  4  
0  2  4  6  8  
0  3  6  9  12  

0  0  0  0  0  
0  2  4  6  8  
0  4  8  12  16  
0  6  12  18  24  
 1
Author: Andy Brown, 2015-01-20 20:48:25