2010-09-10 7 views
3

Salut J'essaie de prendre deux tableaux et de les transformer en un tableau bidimensionnel. Cependant, je continue à obtenir une erreur:Transformer 2 tableaux en un tableau bidimensionnel en Java

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 
at test5.sum(test5.java:12) 
at test5.main(test5.java:38) 

Voici mon code:

public class test5 { 
    int[][] final23; 

    public int[][] sum(int[] x, int[] y) { 
     final23 = new int[2][x.length]; 
     for (int i = 0; i < final23[i].length; i++) { 

      final23[1][i] = x[i]; 
      final23[2][i] = y[i]; 
     } 
     return final23; 
    } 

    public void print() { 
     for (int i = 0; i < final23[i].length; i++) { 
      for (int j = 0; j < final23[i].length; j++) { 

       System.out.print(final23[i][j] + " "); 
      } 
     } 
    } 

    public static void main(String[] args) { 
     int l[] = { 7, 7, 3 }; 
     int k[] = { 4, 6, 2 }; 
     test5 X = new test5(); 

     X.sum(k, l); 
     X.print(); 
    } 
} 

Je ne suis pas vraiment sûr de ce que le problème est. Désolé si la question est stupide, je suis nouveau au codage!

Répondre

3

Il existe également un deuxième problème avec votre programme. Vous avez cette boucle dans les deux sum et print méthodes:

for (int i = 0; i < final23[i].length; i++) 

En méthode de la somme, il devrait être

for (int i = 0; i < final23[0].length; i++) 

Et dans la méthode d'impression

for (int i = 0; i < final23.length; i++) 

Sinon, vous aurez ArrayIndexOutOfBoundsException à nouveau.

Notez que le programme ne fonctionne correctement que si les deux tableaux d'entrée ont la même longueur. Cela pourrait convenir à vos objectifs, mais gardez cela à l'esprit.

+0

Merci! Ça marche :) – Spencer

5

Le problème est:

final23 [2][i] = y[i]; 

tableaux Java commencent toujours à 0. Alors final23 a seulement [0] et [1].

Tout tableau avec n peut aller de 0 à n -1.

+1

Ainsi que des tableaux dans la plupart des langages de programmation communs. Au moins dans ceux dérivés de C. – Carlos

1

Essayez

for (int i = 0; i < final23[i].length; i++) 
{ 

    final23 [0][i] = x[i]; 
    final23 [1][i] = y[i]; 
} 

Rappelez-vous, tous les tableaux sont 0 base, même les n dimensions.

Questions connexes