Partage
  • Partager sur Facebook
  • Partager sur Twitter

Soucis pour récupérer un tableau stocké dans un fichier txt

+ demande d'explications complémentaires

    22 mars 2010 à 18:43:20

    Bonjour à tous,

    J'ai un petit soucis, que je n'arrive pas à régler :

    Je souhaite récupérer le tableau suivant situé dans un fichier texte, et de placer (dans le même ordre) chaque nombre dans un tableau créeé dans ma fonction.

    0 0 0 0 0 0 0
    0 0 0 0 0 0 0
    0 0 10 20 10 0 0
    0 0 30 0 30 0 0
    0 0 30 40 30 0 0
    0 0 2 5 2 0 0
    0 0 0 0 0 0 0

    Pour cela j'ai déjà écrit ça :

    >//lecture du fichier texte
            try {
                InputStream ips = new FileInputStream(nomFichier());
                InputStreamReader ipsr = new InputStreamReader(ips);
                BufferedReader br = new BufferedReader(ipsr);
                String ligne;
                String[] num;
                int i = 0;
    
                ligne = br.readLine();
                while (ligne != null) {
                    num = ligne.split(" ");
                    for (int j = 0; j < DIM_TPROBA; j++) {
    
                        tab[i][j] = Integer.parseInt(num[j]);
                    }
                    i++;
                }
                br.close();
    
            } catch (Exception e) {
                System.out.println(e.toString());
            }
    


    Pour information :
    - DIM_TPROBA c'est la taille du tableau (i.e 7)

    Voilà avec ce code, lorsque je demande l'affichage du tableau il me met :

    java.lang.NumberFormatException: For input string: "0"
    0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 
    0 0 0 0 0 0 0



    J'ai aussi une question bonus : je ne comprend pas à quoi servent les 3 dernière lignes, si quelqu'un pourrai m'expliquer à quoi servent-elles.
    } catch (Exception e) {
                System.out.println(e.toString());
            }
    


    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2010 à 20:35:56

      Bin ca catch les exceptions, si tu sais pas ce que c'est bin suis le tuto. A noter que c'est pas très bon comme code parce que ca mélange les exceptions IO et l'exception de ParseInt. Donc si tu sais lire tu vois que l'erreur vient de parseInt qui foire. Par contre pourquoi ca foire pour parser "0" ca je sais pas.
      • Partager sur Facebook
      • Partager sur Twitter
        22 mars 2010 à 20:39:10

        Ok merci pour l'explication du "Catch". Quelqu'un a une idée pour le problème principal ???
        • Partager sur Facebook
        • Partager sur Twitter
          22 mars 2010 à 20:43:58

          En fait tu peux régler le problème en mettant un try catch la ou il faut et ne pas tout catcher après, mais tu feras pas le différence entre lire 0 et lire n'importe quoi donc faudrait trouver la vrai raison du bug. Mais dans tout les cas il faut faire ca :
          try{
          tab[i][j] = Integer.parseInt(num[j]);
          }catch (NumberFormatException e){
          //peut être quelque chose ici suivant ce que tu veux faire en cas d'erreur
          }

          et remplacer
          catch (Exception e) par
          catch (IOException e)
          Tu devras peut-être rajouter un autre catch mais ca le compilateur te le dira. Il vaut mieux éviter de catcher Exception par flemme parce que comme dans cet exemple on catch des exceptions qui devraient être catchés avant
          • Partager sur Facebook
          • Partager sur Twitter
            22 mars 2010 à 20:51:19

            Merci, mais maintenant il me met ça :
            java.lang.ArrayIndexOutOfBoundsException: 7
            0 0 0 0 0 0 0 
            0 0 0 0 0 0 0 
            0 0 0 0 0 0 0 
            0 0 0 0 0 0 0 
            0 0 0 0 0 0 0 
            0 0 0 0 0 0 0 
            0 0 0 0 0 0 0

            • Partager sur Facebook
            • Partager sur Twitter
              22 mars 2010 à 20:53:19

              Bin tu comprends pas l'anglais? si c'est le cas google peut t'aider. Et pis t'as pas suivis ce que je t'ai dit parce que si tu arrives à afficher le tableau ca veut dire que tu as laissé le catch(Exception)

              Par contre sur le fait que parseInt foire avec "0" c'est une bug, tu dois avoir une fausse version de java lol, parce que chez moi ca marche très bien
              • Partager sur Facebook
              • Partager sur Twitter
                22 mars 2010 à 21:02:51

                Maintenant j'ai le droit à ça
                java.lang.NumberFormatException: For input string: "0"
                java.lang.NumberFormatException: For input string: "0"
                java.lang.NumberFormatException: For input string: "0"
                java.lang.NumberFormatException: For input string: "0"
                java.lang.NumberFormatException: For input string: "0"
                java.lang.NumberFormatException: For input string: "0"
                java.lang.NumberFormatException: For input string: "0"
                Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
                        at Ptraitement.CVent.charger_vent(CVent.java:60)
                        at Ptraitement.CVent.<init>(CVent.java:40)
                        at Ptraitement.Main.main(Main.java:24)
                Java Result: 1


                et j'avais fais la manip sur une autre version de mon projet... ç'est pour ça que cela ne marchait pas dans le message d'avant.
                • Partager sur Facebook
                • Partager sur Twitter
                  22 mars 2010 à 21:05:56

                  edit :
                  ok c'est parfait tu as fait ce que j'ai dit. Maintenant ton programme crache bel est bien quand tu fais un outofBond et comme je l'ai dit y a un bug pas normal avec le parseInt
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 mars 2010 à 21:09:03

                    D'accord, j'avais pas compris, excuse moi j'ai eu 4h de TP en Java cet Aprem et j'en ai plein la tête...
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Soucis pour récupérer un tableau stocké dans un fichier txt

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown