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

Collection et Stream Java Discussion :

[Débutant] ArrayIndexOutOfBoundsException dans un parcours de tableau


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 4
    Points
    4
    Par défaut [Débutant] ArrayIndexOutOfBoundsException dans un parcours de tableau
    Bonjour,

    J'ai le code suivant :
    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
    Scanner sc = new Scanner(System.in);
    char tableau[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm'};
    char carac; char reponse; int i;
     
    		do
    		{ 
    			do   // ligne 13
    			{	
    			i = 0;
    			System.out.println("Entrez une lettre minuscule: ");
    			carac = sc.nextLine().charAt(0);
    //			while (i < tableau.length && carac != tableau[i])   // ligne 18
    			while (carac != tableau[i] && i < tableau.length)   // ligne 19
    				i++;
    				//	if(i < tableau.length)      //  ligne 21
                                                                                   if (carac != tableau[i])   //   ligne 22
    					System.out.println("La lettre " + carac + " ne figure pas dans le tableau");
    					else
    					System.out.println("La lettre " + carac + " se trouve dans le tableau");
    			}
    			while(i >= tableau.length);
    						do
    						{
    						System.out.println("Voulez-vous continer?: O/N");
    						reponse = sc.nextLine().charAt(0);
    						}
    						while(reponse != 'O' && reponse != 'N');
    		}
    		while(reponse == 'O');
    System.out.println("Bye Bye!!");
    L'exécution affiche deux erreurs :
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 13
    at Recherche_Tab.main(Recherche_Tab.java:19)
    Ceci, lorsque j'entre un caractère ne se trouvant pas dans le tableau. Si je remplace la ligne 19 par la 18 et la 22 par la 21 tout marche: Pourquoi?

    Merci de votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par kaled1209 Voir le message
    Si je remplace la ligne 19 par la 18 tout marche: Pourquoi?
    ... Parce qu'elle vérifie si i est bien dans les limites du tableau avant de faire quelque chose qui provoque une erreur si i n'est pas dans les limites du tableau ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Le mieux étant de ne jamais fait réalisé un contrôle d'intégrité logique(valeur de l'index valable pour le tableau) en même temps qu'un contrôle fonctionnelle (correspondance entre les valeurs).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while (i < tableau.length)   // ligne 19
     if(carac == tableau[i]){
    //TODO Faire ce qu'il faut dans ce cas.
    // Puis, sortir du while par un break.
    break;
    }
    // On peut ajouter un else pour faire un println de contrôle (Même si celui-ci est inutile de par la présence du break)
    }
    Ainsi, le code est plus lisible de cette manière.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/09/2007, 15h58
  2. [Débutant] Ecrire dans un tableau
    Par semaj_james dans le forum Prolog
    Réponses: 5
    Dernier message: 16/03/2007, 19h45
  3. [Débutant] Scrolls dans JTextArea
    Par k-reen dans le forum Composants
    Réponses: 2
    Dernier message: 30/06/2004, 16h14
  4. [Débutant] import dans Eclipse
    Par bonnefr dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/05/2004, 10h32
  5. [Débutant] Modifs dans Delphi
    Par J-P-B dans le forum XMLRAD
    Réponses: 6
    Dernier message: 20/06/2003, 15h55

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