Java:java.lang.ArrayIndexOutOfBoundsException

Résolu
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. 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
    1. 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. ok je comprend tous ce que vous dites
        mais,aidez moi dans ce prg svp
        1. 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