Java:java.lang.ArrayIndexOutOfBoundsException

Résolu
domxaline -  
 danimo -
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];
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]);
		}
	}

}



4 réponses

  1. domxaline
     
    ok je resolu le pb
    public class Fusion1 
    {
    	public static void main(String[] args) 
    	{
    		int[]A={1,2};
    		int[]B={7,8,9};
    		int[]C=new int[A.length+B.length];
     
    		int Bindex = 0;
    		// on stocke les valeurs de A dans C
    		for(int i=0;i<A.length;i++)
    		{
    			C[i]=A[i];
    		}
     
            // on stocke les valeurs de B dans C	
    		for(int i=A.length;i<B.length+A.length;i++)
    		{
    			C[i]=B[Bindex];
    			Bindex ++;
    		}
     
    		// On affiche le tout
    		for(int i=0;i<C.length;i++)
    		{
    			System.out.print(C[i]+",");
    		}
     
    	}
    }
    
    1
  2. danimo
     
    Bonjour,

    Une petite question:

    Est-ce un exercice qui oblige de programmer la fusion sans utiliser, les méthodes existantes (je pense à la méthode sort de la classe Arrays) ?

    Il suffirait alors de copier tout a dans c, puis tout b dans c et enfin de trier c pour avoir une fusion triée.

    Sinon il faudra revoir ton code...

    Une remarque:

    Essayer de respecter les conventions de nommage en Java.

    exemples:
    Le nom d'une variable devrait commencer par une lettre minuscule,
    Le nom d'une classe par une majuscule,
    Tes tableaux A, B et C devraient se nommer (au minimum ) a, b et c.

    Consulter par exempe:
    http://www.loribel.com/java/normes/nommage.html

    Cordialement,

    Dan
    0
  3. domxaline
     
    ok je comprend tous ce que vous dites
    mais,aidez moi dans ce prg svp
    0
  4. danimo
     
    Bonjour,

    int i1 = 0;
    int i2 = 0;
    
    // copie du tableau tabA dans le tableau tabC:
       for(i1 = 0; i1 < tabA.length; i1++)
             {
                tabC[i1] = tabA[i1];
             }
    
    // copie du tableau tabB dans le tableau tabC
    // cette copie doit se faire à la suite de celle de tabA dans tabC
    // c'est à dire à l'index i1:
             for(i2 = 0; i2 < tabB.length; i2++)
             {
                tabC[i1] = tabB[i2];
                i1++;
             }
    // et c'est terminé pour les copies. Il reste à trier le tableau tabC. 
    Arrays.sort(tabC);  //import java.util.Arrays;
             
             System.out.println("\ntabC après tri:");
             for(int i = 0; i < tabC.length; i++)
             {
                System.out.println(tabC[i]);
             }
    


    Cordialement,

    Dan
    0