tableau outofBound

tableau outofBound - Java - Programmation

Marsh Posté le 20-06-2015 à 22:34:52    

bonjour
l'utilisateur entre différent taille de tableau veut dire tableau 1=2 et tableau2 = 3
en exécutant mon prg j'ai erreur suivante
 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at Testing4.main(Testing4.java:31)
 
veuillez m'aider svp
voilà mon prg:

Code :
  1. import java.util.Scanner;
  2. public class Testing4
  3. {
  4.   public static void main(String[] args)
  5.   {
  6. Scanner sc=new Scanner(System.in);
  7. System.out.println("**Entrez nb d'élément de premier tableau:***" );
  8. int m=sc.nextInt();
  9. int tab1[]=new int[m];
  10. System.out.println("**Entrez nb d'élément de deuxième tableau:***" );
  11. int n=sc.nextInt();
  12. int tab2[]=new int[n];
  13. for(int i=0;i<tab1.length;i++)
  14. {
  15.  System.out.println("*Entrez l'élément tableau 1 * n°"+(i+1)+""+" du tableau:" );
  16.  tab1[i]=sc.nextInt();
  17. }
  18. for(int i=0;i<tab2.length;i++)
  19. {
  20.  System.out.println("*Entrez l'élément tableau 2 * n°"+(i+1)+""+" du tableau:" );
  21.  tab2[i]=sc.nextInt();
  22. }
  23. int tab3[]=new int [Math.max(m, n)];
  24. for(int i=0;i<tab3.length;i++)
  25.     {
  26.     tab3[i]=tab1[i]+tab2[i];
  27.     System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+tab3[i]);
  28.     }
  29.   }
  30. }

Reply

Marsh Posté le 20-06-2015 à 22:34:52   

Reply

Marsh Posté le 20-06-2015 à 22:44:05    

C'est parfaitement logique vu le code....

 

Si tu prends taile tab1 = 2 et taille tab2 = 3 alors tab3 sera de taille 3 puisque max(2,3)=3. Ton index i (ligne 29) va donc de zéro à deux, or le tab1 est seulement de taille 2 donc dernier index=1.

 

ligne 27 t'as pas confondu Max et Min par hasard?

Message cité 1 fois
Message édité par rat de combat le 20-06-2015 à 22:44:36
Reply

Marsh Posté le 20-06-2015 à 23:49:07    

rat de combat a écrit :

C'est parfaitement logique vu le code....
 
Si tu prends taile tab1 = 2 et taille tab2 = 3 alors tab3 sera de taille 3 puisque max(2,3)=3. Ton index i (ligne 29) va donc de zéro à deux, or le tab1 est seulement de taille 2 donc dernier index=1.
 
ligne 27 t'as pas confondu Max et Min par hasard?


 
c'est vrai ce là que j'ai pb
mais je ne sais pas comment le résoudre

Reply

Marsh Posté le 21-06-2015 à 19:15:21    

Déjà dis nous ce que tu veux faire. Additionner deux tableaux de tailles différentes il y a forcément un problème. Soit tu prends min() ligne 27 et tu ignores ce qui reste dans un des tableaux, soit tu fais deux tableaux de même taille (soit virer les lignes 12 et 13 et mettre m à la place de n ligne 14).

Reply

Marsh Posté le 22-06-2015 à 08:29:52    

merci beaucoup, j'ai résolu mon pb ainsi:

Code :
  1. import java.util.Scanner;
  2. public class Testing3
  3. {
  4.   public static void main(String[] args)
  5.   {
  6.     Scanner sc=new Scanner(System.in);
  7.     System.out.println("*****Entrez nb d'élément de premier tableau:*****" );
  8.     int m=sc.nextInt();
  9.     System.out.println("*****Entrez nb d'élément de deuxième tableau:*****" );
  10.     int n=sc.nextInt();
  11.     int p = Math.max(m, n);
  12.     int tab1[]=new int[p];
  13.     int tab2[]=new int[p];
  14.     int tab3[]=new int[p];
  15.     for(int i=0;i<n;i++)
  16.     {
  17.       System.out.println("*Entrez l'élément tableau 1 * n°"+(i+1)+""+" du tableau:" );
  18.       tab1[i]=sc.nextInt();
  19.     }
  20.     for(int i=0;i<m;i++)
  21.     {
  22.        System.out.println("*Entrez l'élément tableau 2 * n°"+(i+1)+""+" du tableau:" );
  23.        tab2[i]=sc.nextInt();
  24.     }
  25.     for(int i=0;i<p;i++)
  26.     {
  27.     tab3[i]=tab1[i]+tab2[i];
  28.     System.out.println("L'addtion de chaque élément de ces 2 tableaux sont: "+tab1[i]+"+"+tab2[i]+" = "+tab3[i]);
  29.     }
  30.   }
  31. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed