IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NetBeans Java Discussion :

Erreur java lang.ArrayIndexOutOfBoundsException


Sujet :

NetBeans Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Erreur java lang.ArrayIndexOutOfBoundsException
    vous allez me dire que cette erreur a déjà été résolu mais malheureusement je ne vois pas pourquoi cela ne marche pas . Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void lireDevise() {
            try {
                BufferedReader bd = new BufferedReader(new FileReader(nomFichier));
                String ligne = bd.readLine();
                String[] devise = new String[2];
                while (ligne != null) {
                    devise = ligne.split(":");
                    taux.put(devise[0], Double.parseDouble(devise[1]));
                    ligne = bd.readLine();
                }
            } catch (IOException ex) {
                System.err.println("erreur de lecture du fichier " + nomFichier);
            }
        }
    avec nomFichier="C:\\Users\\roro\\Documents\\NetBeansProjects\\ConvertisseurEuro\\devise.txt";
    Netbeans me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
            at convertisseureuro.FenetrePrincipale.lireDevise(FenetrePrincipale.java:164)
            at convertisseureuro.FenetrePrincipale.jButton1ActionPerformed(FenetrePrincipale.java:180)
            at convertisseureuro.FenetrePrincipale.access$100(FenetrePrincipale.java:16)
            at convertisseureuro.FenetrePrincipale$2.actionPerformed(FenetrePrincipale.java:70)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
            at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
            at java.awt.Component.processMouseEvent(Component.java:6038)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
            at java.awt.Component.processEvent(Component.java:5803)
            at java.awt.Container.processEvent(Container.java:2058)
            at java.awt.Component.dispatchEventImpl(Component.java:4410)
            at java.awt.Container.dispatchEventImpl(Container.java:2116)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
            at java.awt.Container.dispatchEventImpl(Container.java:2102)
            at java.awt.Window.dispatchEventImpl(Window.java:2429)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    BUILD SUCCESSFUL (total time: 13 seconds)
    Le temps est le pire enemi de l'homme

  2. #2
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Cette initialisation est inutile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] devise = new String[2];
    Tu devrais juste déclarer la variable :

    En fait, l'initialisation est faite dans la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    devise = ligne.split(":");
    et dans cette initialisation, le split a certainement construit un tableau avec une seule String.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Re
    Il me dit qu'il y a cette erreur à ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taux.put(devise[0], Double.parseDouble(devise[1]));
    sachant que taux est déclaré ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Map<String, Double> taux = new HashMap<String, Double>();
    Le temps est le pire enemi de l'homme

  4. #4
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par lerorodu51 Voir le message
    java.lang.ArrayIndexOutOfBoundsException: 1
    Citation Envoyé par hasalex Voir le message
    et dans cette initialisation, le split a certainement construit un tableau avec une seule String.
    Citation Envoyé par lerorodu51 Voir le message
    sachant que taux est déclaré ainsi :
    Je pense qu'il va falloir que tu cibles un peu plus les messages d'erreur. Là, il te dit qu'il y a un index hors limite sur ton tableau, en particulier sur l'index 1, ce n'est donc pas ta variable taux qui pose problème... c'est l'autre... celle où tu cherches à accéder à l'index 1 du tableau

    Comme le dit hasalex, le split n'a rien splitté... il y a quoi dans ligne?
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut
    Dans le fichier texte il y a 3 lignes :

    USD:4,456
    FRF:8,345
    GPB:9,97867
    Le temps est le pire enemi de l'homme

  6. #6
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Est-ce que tu n'aurais pas une dernière ligne vide ?

    Dans tous les cas, je te conseille de faire un test sur la taille de ton tableau, ça t'évitera des surprises.

  7. #7
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par plegat Voir le message
    il y a quoi dans ligne?
    Citation Envoyé par lerorodu51 Voir le message
    Dans le fichier texte il y a 3 lignes
    gnaaaa, ce n'est pas ce que j'ai demandé!!!

    Le problème est dans ton programme, regarde ce qu'il a récupéré comme valeur... pas ce que tu as mis dans le fichier...

    +1 pour la dernière remarque d'hasalex
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    390
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 390
    Points : 127
    Points
    127
    Par défaut Re
    C'est bon, l'erreur était dans le fichier texte où il y avait une ligne vide (on pouvait pas voir sur le coup). Merci quand même :d
    Le temps est le pire enemi de l'homme

  9. #9
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par lerorodu51 Voir le message
    C'est bon, l'erreur était dans le fichier texte
    Non non, elle est dans ton code qui ne gère pas ce cas de figure
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur "java.lang.ArrayIndexOutOfBoundsException: 0"
    Par Mourad19 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/10/2014, 02h36
  2. Réponses: 1
    Dernier message: 10/08/2013, 18h45
  3. Réponses: 4
    Dernier message: 18/04/2013, 10h41
  4. Réponses: 1
    Dernier message: 07/09/2012, 17h14
  5. Erreur : java.lang.ArrayIndexOutOfBoundsException
    Par the watcher dans le forum Langage
    Réponses: 10
    Dernier message: 22/09/2010, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo