0
votes

Obtenir des valeurs entières au tableau du fichier

J'essaie d'obtenir des valeurs entières par des virgules séparées à partir d'un fichier et de les mettre dans une matrice 2D. Le fichier est comme celui-ci; xxx

donc je veux que la première ligne soit en matrice [0] [0 à 5] et même pour les autres lignes également, par exemple tableau [2] [1] [1] Doit être 10. Mais je ne peux pas comprendre l'algorithme de la matrice 2D ici du tout. xxx


0 commentaires

3 Réponses :


0
votes

Vous êtes en boucle à chaque valeur pour chaque ligne. L'un de vos indices doit être la ligne et l'autre doit être la position dans la ligne. Vous n'avez besoin que d'un pour code> boucle; vous devez incrémenter l'autre index dans votre enfance.

public static void main(String[] args) throws FileNotFoundException {
    BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
    Scanner sc = new Scanner(reader);
    int[][] array = new int[6][6];
    int i=0;
    while(sc.hasNextLine()){
        String line = sc.nextLine();
        String[] str = line.split(",");
        for (int j = 0; j < 6; j++) {
            array[i][j] = Integer.valueOf(str[j]);
        }
        i++;
    }
}


2 commentaires

C'était en fait une matrice stable 81x81 dans le fichier, mais je voulais créer un prototype avec une matrice 6x6 ici. Vos travaux de code et votre tableau 2D contiennent les valeurs, je dois maintenant les utiliser pour trouver des chemins les plus courts entre les voisins. Je n'ai pas compris ce que vous avez dit enfin parce que je suis nouveau à la programmation, le code que vous avez partagé fonctionnerait pour mon projet ou s'il vous plaît pouvez-vous me dire ce que je dois utiliser avec plus de spesifiques?


Le code fonctionnera comme cela, il a juste des limitations. Puisque vous traitez vraiment avec une matrice ici, les indices fixes ont probablement un sens. Pour résoudre le problème des indices étant hors limites, il suffit d'ajouter cela aux conditions. Par exemple, vous pouvez effectuer une boucle de votre temps, vous pouvez faire tandis que (sc.hasnextline () && i <6) . Vous auriez besoin d'un état similaire dans votre boucle. S'il y a moins de 6 valeurs séparées par des virgules, str [j] va jeter une exception depuis que j existe. En ce qui concerne les autres types de données, je pensais quelque chose comme ArrayList . Puisque vous avez des valeurs fixes, la matrice primitive est correcte.



0
votes

Vous pouvez le faire comme ça. Le point clé est qu'il n'ya pas de réelles tableaux multidimensionnels en Java. Juste des tableaux de D peut également contenir des tableaux. XXX PRE>

Alors, ce qui était comme ce qui suit; P>

int [][] matrix = new int[2][];
matrix[0] = new int[]{1,2,3,4};
// rows can be different sizes.
matrix[1] = new int[]{1,2,3,4,5,6,7};      

for (int i = 0; i <2; i++) {
   int[] row  = matrix[i];
   for (int j = 0; j < row.length; j++) {
        System.out.print(row[j] + " " );
   }
   System.out.println(); // next line
} 


0 commentaires

0
votes

Voici une façon plus moderne de le faire, en utilisant NIO et Streams : xxx


0 commentaires