Lecture 2-D tableau à partir d'un fichier
J'ai un 2-D int tableau dans le fichier 'array.txt'. Je suis en train de lire tous les éléments dans le fichier dans un tableau à deux dimensions. Je vais avoir des problème dans la copie. Il montre tous les éléments ayant une valeur de " 0 " après la copie au lieu de leur valeur d'origine. S'il vous plaît aider moi.
Mon code est :
import java.util.*;
import java.lang.*;
import java.io.*;
public class appMainNineSix {
/**
* @param args
*/
public static void main(String[] args)
throws java.io.FileNotFoundException{
//TODO Auto-generated method stub
Scanner input = new Scanner (new File("src/array.txt"));
int m = 3;
int n = 5;
int[][] a = new int [m][n];
while (input.next()!=null){
for (int i=0;i<m;i++){
for (int j=0;j<n;j++)
a[i][j]= input.nextInt();
}
}
//print the input matrix
System.out.println("The input sorted matrix is : ");
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
System.out.println(a[i][j]);
}
}
}
Pouvez-vous poster le fichier lui-même?
J'ai essayé ur le code qu'il imprime les valeurs de la matrice,mais elle lève une exception si u atteindre la fin du fichier!
J'ai essayé ur le code qu'il imprime les valeurs de la matrice,mais elle lève une exception si u atteindre la fin du fichier!
OriginalL'auteur Neel | 2011-01-22
Vous devez vous connecter pour publier un commentaire.
while (input.next()!=null)
Cela permettra de consommer quelque chose à partir du scanner flux d'entrée. Au lieu de cela, essayez d'utiliser
while (input.hasNextInt())
Selon la façon robuste vous voulez que votre code, vous devez également vérifier l'intérieur de la boucle for que quelque chose est disponible pour la lecture.
Une alternative à l'aide ArrayLists (pas de pré-lecture obligatoire):
input.nextInt()
est appelém x n
fois.vrai, a ajouté un additif pour plus intelligente de la lecture du fichier
Vous êtes à l'ouverture et lecture du fichier double?
Cela vous permet de connaître la taille du tableau avant de le lire car les tableaux en Java sont de taille fixe (c'est à dire que vous ne pouvez pas "prolonger"). Vous pourriez utiliser une ArrayList de ArrayLists pour accomplir cela avec seulement de l'ouverture du fichier une fois (ou de mettre en œuvre une liste de tableaux d'une structure semblable à vous-même, si ce n'est généralement pas recommandé), ou vous pouvez créer un assez grand tableau que ce que vous lisez dans l'ajustement sera parfait. De manière générale, j'aime l'ajustement exact des tableaux ou ArrayLists solutions.
Si vous ne connaissez pas la taille de la main avant de l'utiliser une ArrayList.
OriginalL'auteur helloworld922
Bien le problème peut être que vous avez cette paire de boucles imbriquées à lire les nombres coincé à l'intérieur de que la boucle while. Pourquoi voudriez-vous re-lire les valeurs de tableau après avoir lu une seule fois? Et notez que si il y a rien dans le fichier après le dernier numéro, puis vous pourrez remplir le tableau avec ce que
.nextInt()
retourne après la fin de fichier a été atteinte!modifier — bien
.nextInt()
doit lever une exception, je pense que lorsque les cycles de saisie, ce qui peut ne pas être le problème.OriginalL'auteur Pointy
Commencer simple...
changement:
:
Et assurez-vous que les valeurs sont lues dans.
Aussi, vous ne devez pas appeler à côté sans appeler (et de la vérification) hasNext (ou nextInt/hasNextInt).
parce que je veux que les choses soient cohérentes, et depuis je ne peut toujours déclarer et de les assigner je n'ai jamais déclarer et de les céder.
OriginalL'auteur TofuBeer
Le problème, c'est quand u atteindre la fin du fichier il throughs une exception qui n'usch élément existent.
Je savais que faire attraper sans traitement de l'exception mais il des travaux temporaires.
S'il vous plaît être conscient que je mettre le fichier en dehors du dossier source.
OriginalL'auteur palAlaa
Vous pouvez essayer d'Utiliser la Goyave ,
OriginalL'auteur imvp