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

Java Discussion :

Message d'erreur levé une exception


Sujet :

Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Message d'erreur levé une exception
    Bonsoir,

    Erreur: Votre programme a levé une exception car il a lu trop de caractères!

    -------------------------------------------------------------------------------------------------


    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
    public class penduu{
        public static void main(String[] args){
     
               char lettre;
               int counter = 0;
               int i=0;
               char[] unmot =new char[14];
               char[] motdeviner = new char[14];
             for  (i = 0; i<counter; i ++){
             motdeviner[i]=' ';
             unmot[i]=' ';}  
           unmot = MOOC.motAuSort();
     
          for  (i = 0; i<14; i ++){
           if  (unmot[i]!=' '){
               counter=counter+1;}
               }
           for  (i = 0; i<counter; i ++){
             motdeviner[i]='-';}
     
         while (motdeviner[i] != unmot[i])   {   
               System.out.println("Entrer une lettre"); 
               lettre = MOOC.readChar();
           for (i=0;i<counter;i++) {
            if (unmot[i] == lettre){
                motdeviner[i] = lettre;}
              } System.out.println(motdeviner);
            } System.out.print("bravo tu as trouvé le mot");
     } 
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ce serait mieux si tu nous donnais l'exception et la stacktrace de celle-ci.

    Tu obtiens probablement une ArrayIndexOutOfBoundException dans cette ligne (surlignée en jaune) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    unmot = MOOC.motAuSort();
    
    		for (i = 0; i < 14; i++) {
    			if (unmot[i] != ' ') {
    				counter = counter + 1;
    			}
    		}
    En effet, il est peu probable que le mot tiré au sort fasse 14 lettres. Il faut toujours parcourir les tableaux en utilisant leur taille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    unmot = MOOC.motAuSort();
    
    		for (i = 0; i < unmot.length; i++) {
    			if (unmot[i] != ' ') {
    				counter = counter + 1;
    			}
    		}
    C'est vrai également pour la boucle suivante (le for sur motdeviner) : il y'a peu de probabilité pour que motdeviner ait la même taille que unmot.

    Quant au while while (motdeviner[i] != unmot[i]) {, il plantera à coup sûr. i vallant la taille de unmot lors du premier passage. On évite de réutilisr des variables (ici i) pour éviter ce genre de problèmes.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses . Le problème c'est que la boucle While ne s’arrête pas quand le mot est trouvé.
    Je crois que la condition (unmot != motdeviner) se concrétise toujours.Le problème persiste.
    J'ai tenté ce code mais en vain .
    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
    public class pendu{
        public static void main(String[] args){
     
               char lettre;
               int i=0;
     
               char[] unmot =new char[14];
               char[] motdeviner = new char[14];
     
               unmot = MOOC.motAuSort();
           for  (i = 0; i<unmot.length; i ++){
             motdeviner[i]='-';
           }System.out.println(motdeviner);
     
         while (motdeviner != unmot)   {   
               System.out.println("Entrer une lettre"); 
               lettre = MOOC.readChar();
           for (i=0;i<unmot.length;i++) {
            if (unmot[i] == lettre){
                motdeviner[i] = lettre;}
              } System.out.println(motdeviner);
            } System.out.print("bravo tu as trouvé le mot");
     } 
    }

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J'ai essayé ce code et voila ce que le compilateur me dit:
    AssertionError: Votre programme a levé une exception java.lang.ArrayIndexOutOfBoundsException: 14 à la ligne 29 de votre fichier


    voila le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class pendabc{
        public static void main(String[] args){
     
               char lettre;
               int i=0;
               int counter=0; 
               char[] unmot = new char[14];
               unmot = MOOC.motAuSort();
     
               char[] motdeviner = new char[unmot.length];
     
               for (i = 0; i < unmot.length; i++) {
                   if (unmot[i] !=' ') {
                    counter = counter + 1;
                     }
                    } 
     
           for  (i = 0; i<counter; i ++){
             motdeviner[i]='-';
           }System.out.println(motdeviner);
     
         do {   
               System.out.println("Entrer une lettre"); 
               lettre = MOOC.readChar();
           for (i=0;i<unmot.length;i++) {
            if (unmot[i] == lettre){
                motdeviner[i] = lettre;}
              } System.out.println(motdeviner);
            }while (motdeviner[i]=='-' ) ;
     } 
    }

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par azard Voir le message
    Merci pour vos réponses . Le problème c'est que la boucle While ne s’arrête pas quand le mot est trouvé.
    Je crois que la condition (unmot != motdeviner) se concrétise toujours.Le problème persiste.
    Avec != tu compares les références des 2 tableaux. Il s'agit de 2 tableaux différents donc toujours de références différentes, donc la condition est toujours vraie.

    Il faut utiliser cette expression !Arrays.equals(unmot, motdeviner);.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par azard Voir le message
    J'ai essayé ce code et voila ce que le compilateur me dit:
    AssertionError: Votre programme a levé une exception java.lang.ArrayIndexOutOfBoundsException: 14 à la ligne 29 de votre fichier
    Toujours le même problème : une gestion incohérente des index.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for (i = 0; i < unmot.length; i++) {
            if (unmot[i] == lettre) {
                motdeviner[i] = lettre;
            }
        }
        System.out.println(motdeviner);
    } while (motdeviner[i] == '-');
    Le for fait varier i de 0 à longueur de unmot. La longueur de motdeviner doit être de la même que unmot a priori. Donc la condition du while teste un caractère en dehors des bornes.
    La condition du while devrait être : tant qu'il reste un '-' dans motdeviner. Mais autant utiliser !Arrays.equals(motdeviner, unmot), sinon il faut que tu écrives une méthode pour tester s'il y a encore un '-' dans le tableau.


    PS : indente correctement ton code. C'est quoi cette façon (foireuse) de coller une accolade fermante juste derrière un ; ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [VB.NET] Message d'erreur pour une exception mémoire
    Par toutounesan dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/10/2011, 12h11
  2. récupération des message d'erreurs dans une jsp
    Par clement42 dans le forum Struts 1
    Réponses: 17
    Dernier message: 23/10/2006, 11h59
  3. Afficher un message d'erreur dans une fenêtre popup
    Par Quickeno dans le forum Langage
    Réponses: 7
    Dernier message: 08/10/2006, 01h56
  4. Réponses: 3
    Dernier message: 01/10/2006, 13h04
  5. [Message d'erreur] Classe d'exception
    Par Pascal dans le forum Bases de données
    Réponses: 4
    Dernier message: 23/05/2004, 10h08

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