2017-09-07 2 views
0

Je souhaite stocker le contenu dans un fichier texte dans un tableau. Voici les données du fichier txt:JAVA: Stockage du contenu du fichier txt dans les tableaux 3D

0.8585781857237149 0.27817454182457335 -0.8050499953993335 

0.6370714882668496 0.2972334455862271 -0.03239256370254662  

-0.27150466294617615 0.6458147357741209 -0.8755197569879973   



0.8714523367008264 0.5051711395439467 0.7632793840501568  

0.9722198583553305 -0.6540230961515898 0.5498519669064881 

-0.1289712393377327 0.5729094349133539 -0.32452314324200193  

J'ai essayé d'exécuter ce code:

FileInputStream in = new FileInputStream("file.txt"); 
BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

        while ((line = br.readLine()) != null) {       

         for (z=0; z<2; z++){  
          for (y=0; y<9; y++){ 
           for (x=0; x<5; x++){ 
            filearray[x][y][z]=br.readLine(); 
           } 
          } 
         } 

         System.out.println(Arrays.toString(filearray)); 
        } 

mais la sortie m'a donné une erreur avec ce message d'erreur:

[[[Ljava.lang.String;@2a3046da, [[Ljava.lang.String;@2a098129, [[Ljava.lang.String;@198e2867, [[Ljava.lang.String;@12f40c25, [[Ljava.lang.String;@3ada9e37] 

Y a-t-il une erreur dans mon code? Merci d'avance.

+0

Êtes-vous sûr que c'est un message d'erreur? Je crois que c'est en fait la sortie que vous imprimez –

+1

"_la sortie m'a donné une erreur_" Ce n'est pas une erreur, c'est une sortie 'toString()' valide d'un tableau. – csmckelvey

+0

Essayez d'imprimer l'objet spécifique à partir de ce tableau. Si vous essayez d'imprimer un tableau entier, il lui fournit toujours un HashCode. Pas les valeurs directes. Essayez System.out.println (Arrays.toString (filearray [x] [y] [z])); dans votre boucle. – procrastinator

Répondre

0

Arrays.toString() est une fonction qui vous renvoie le contenu d'un tableau. Devinez quoi, vous avez un tableau 3D, donc il va imprimer les tableaux à l'intérieur du 1er. Vous devez effectuer une boucle sur les tableaux en utilisant cette fonction uniquement dans la "3ème dimension".

Pour être plus clair:

for (x=0; x<5; z++){  
    for (y=0; y<9; y++){ 
     System.out.println(Arrays.toString(filearray[x][y])); 
    } 
} 

Vous devez modifier pour les imprimer dans l'ordre que vous préférez, mais je pense que vous pouvez comprendre la façon de le faire.

+0

J'ai essayé this'System.out.println (Arrays.toString (filearray [x] [y] [z])); 'dans la boucle for. Malheureusement, la méthode 'toString' (long []) dans le type Arrays ne s'applique pas aux arguments (String). Les contenus sont-ils tous stockés dans une matrice? – lcc

+0

relire ma réponse. Je vous ai dit de l'essayer avec System.out.println (Arrays.toString (filearray [x] [y])); ', parce que le contenu de' filearray [x] [y] 'est un tableau. Si vous utilisez 'System.out.println (Arrays.toString (filearray [x] [y] [z])), vous essayez d'utiliser une fonction' Arrays' sur un élément 'String'. –