Problème d'utilisation du if

Problème d'utilisation du if - Java - Programmation

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

Reply

Marsh Posté le 03-12-2009 à 00:18:23   

Reply

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().

Reply

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...

Reply

Marsh Posté le 05-12-2009 à 11:59:17    

J'ai trouvé une autre solution.
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed