Problème d'utilisation du if - Java - Programmation
Marsh Posté le 03-12-2009 à 00:53:20
C'est pourtant bien indiqué que c'est la méthode next() qui plante. Parce qu'il n'y a pas d'élément suivant disponible. Donc tu dois TOUJOURS tester s'il existe un élément suivant en appelant hasNext(), avant d'appeler next().
Marsh Posté le 03-12-2009 à 06:44:51
En fait dans le fichier dont j'extrais mes matrices il y en a encore après la numéro 12.
Et puis je suis en grande partie autodidacte en programmation, donc ça peut te paraitre logique mais avant que ça me saute aux yeux...
Marsh Posté le 03-12-2009 à 00:18:23
Bonjour,
J'ai écrit une application sous Eclipse qui est censée me lire un fichier .txt, m'en extraire des données et me les afficher dans la console (dans un premier temps). J'obtiens un message d'erreur
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at Project_home.extraction_matrice(Project_home.java:78)
at Project_home.main(Project_home.java:13)
La ligne 78 est : if (matrices.next().compareTo("matrice" )==0){
static void extraction_matrice(Scanner matrices){
int a=0;
int b=0;
while(matrices.hasNext()){
if (matrices.next().compareTo("matrice" )==0){
if (matrices.nextInt()==3 ){
while(matrices.next().compareTo("********************" )!=0){
a=matrices.nextInt();
matrices.next();
b=matrices.nextInt();
//créer un tableau de a lignes et b colonnes
int tableau3[][]=new int[a][b];
for (int k=0;k<tableau3.length;k++){
for(int j=0;j<tableau3[0].length;j++){
tableau3[k][j]=matrices.nextInt();
System.out.println(tableau3[k][j]);
}
}
}
}
System.out.println(" " );
}
if (matrices.next().compareTo("matrice" )==0){
if (matrices.nextInt()==6){
while(matrices.next().compareTo("********************" )!=0){
a=matrices.nextInt();
matrices.next();
b=matrices.nextInt();
int tableau6[][]=new int[a][b];
for (int k=0;k<tableau6.length;k++){
for(int j=0;j<tableau6[0].length;j++){
tableau6[k][j]=matrices.nextInt();
System.out.println(tableau6[k][j]);
}
}
}
}
System.out.println(" " );
}
if (matrices.next().compareTo("matrice" )==0){
if (matrices.nextInt()==7){
while(matrices.next().compareTo("********************" )!=0){
a=matrices.nextInt();
matrices.next();
b=matrices.nextInt();
int tableau7[][]=new int[a][b];
for (int k=0;k<tableau7.length;k++){
for(int j=0;j<tableau7[0].length;j++){
tableau7[k][j]=matrices.nextInt();
System.out.println(tableau7[k][j]);
}
}
}
}
System.out.println(" " );
}
if (matrices.next().compareTo("matrice" )==0){
if (matrices.nextInt()==12){
while(matrices.next().compareTo("********************" )!=0){
a=matrices.nextInt();
matrices.next();
b=matrices.nextInt();
int tableau12[][]=new int[a][b];
for (int k=0;k<tableau12.length;k++){
for(int j=0;j<tableau12[0].length;j++){
tableau12[k][j]=matrices.nextInt();
System.out.println(tableau12[k][j]);
}
}
}
}
}
}
Comme ce "if" est le dernier de la boucle, je me dis que mon erreur vient de là et qu'il doit y avoir un autre terme à utiliser,mais je ne sais pas comment le corriger.
Ensuite j'avoue ne pas très bien comprendre le message d'erreur.
Veuillez m'excuser pour la longueur du post, mais je ne sais pas comment mieux vous expliquer le problème qu'en le montrant.
Par avance merci