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

avec Java Discussion :

Erreur "java.lang OutOf Bounds Exception: 3"


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut Erreur "java.lang OutOf Bounds Exception: 3"
    Bonjour,
    prg suivant me donne erreur suivantes:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at Fusion.main(Fusion.java:24)
    la ligne 24 est :
    C[Bindex]=B[Bindex];

    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
    32
     
    public class Fusion 
    {
    	public static void main(String[]args)
    	{
    		int[]A={1,2};
    		int[]B={7,8,9};
    		int[]C=new int[A.length+B.length];
     
    		int AIndex=0;
    		int Acount= A.length;
    		int Cindex=C.length;
     
    		while(AIndex<Acount)
    		{
    			if(A[AIndex]<B [AIndex])
    			{
    				C[AIndex]=A[AIndex];
    			}
    			AIndex++;
    		}
    		for(int Bindex=1;Bindex<Cindex;Bindex++)
    		{
    			C[Bindex]=B[Bindex];
    		}
    		for(int i=0;i<C.length;i++)
    		{
    			System.out.println(C[i]);
    		}
    	}
     
    }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Il n'y a que trois éléments dans B et vous essayez de lire le 4ème

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    pouvez vous me donner plus d'explications svp

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int[]A={1,2};
    int[]B={7,8,9};
    int[]C=new int[A.length+B.length];
    taille de A : 2
    taille de B : 3
    taille de C : 3 + 2 = 5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(int Bindex=1;Bindex<Cindex;Bindex++)
    {
    	C[Bindex]=B[Bindex];
    }
    Ta boucle dis que que tu vas de 1 à taille de C donc de 1 à 5 puis tu fais
    B[Bindex], ce qui donne pour résultat de ta boucle
    B[1],B[2],B[3],B[4],B[5]

    or taille de B : 3 donc B[4] donne une erreur
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    vous voulez que j"écrit comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    for(int Bindex=1;Bindex<Cindex;Bindex++)
    		{
    			//C[Bindex]=B[Bindex];//3
    			B[Bindex]=C[Cindex];//5
    		}
    donne toujours erreur cette fois
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at Fusion.main(Fusion.java:26)

    aidez moi,sans m’engueuler svp

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on ne veux rien du tout, on te donne ton erreur. Après, à toi de corriger ton algorithme. L'erreur est toujours la même: tu lit au delà des limite de ton tableau.

    Les indexs valides pour un tableau X c'est [0,X.length-1]

  7. #7
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Pas de soucis

    1/ tu n'as pas changé l'erreur, B[Bindex] va toujours aller à 5 avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(int Bindex=1;Bindex<Cindex;Bindex++)
    il faut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(int Bindex=1;Bindex<B.length;Bindex++)
    puis un tableau commence à 0, donc C va de 0 à 4 or ton Cindex vaut 5 donc C[5] on revient à la même erreur, tentative d'accès à l'index 5 faux.
    je ne sais pas si c'est ce que tu veux mais voici une boucle qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(int Bindex=1;Bindex<Bindex.length;Bindex++)
    {
    	B[Bindex]=C[Cindex-1];//5
    }
    Remarque : Si tu ne comprend pas les erreurs tu devrais faire les exercices du tuto de java, si tu as du temps, ils sont bien est corrigé tu apprendrais bien plus que de faire corriger les traitements ici. C'est juste un avis personnel ^^.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

Discussions similaires

  1. Erreur "java.lang.AssertionError: Unexpected exception parsing XML document..."
    Par ZeRo0Cold dans le forum Persistance des données
    Réponses: 6
    Dernier message: 25/05/2015, 17h48
  2. Réponses: 3
    Dernier message: 31/07/2012, 02h42
  3. erreur de java.lang.NullPointerException
    Par vince351 dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2007, 12h29

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