2016-04-29 14 views
0

ich eine Matrix in Java erstellen möge .. Ich implementiert den folgenden Codeeine Matrix, in Java zu schaffen

public class Tester { 

    public static void main(String[] args) { 

     int[][] a = new int[2][0]; 
     a[0][0] = 3; 
     a[1][0] = 5; 
     a[2][0] = 6; 
     int max = 1; 
     for (int x = 0; x < a.length; x++) { 
      for (int b = 0; b < a[x].length; b++) { 
       if (a[x][b] > max) { 
        max = a[x][b]; 
        System.out.println(max); 

       } 

       System.out.println(a[x][b]); 

      } 

     } 

     System.out.println(a[x][b]); 


    } 
} 

Wenn ich führe Sie den Code ich folgende Fehlermeldung erhalten:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 
    at shapes.Tester.main(Tester.java:8) 

Ich habe versucht, verschiedene Methoden, um den Code zu korrigieren, aber nichts war hilfreich Können Sie bitte den Code für mich korrigieren?

danke

+0

Es macht keinen Sinn, eine 2D-Matrix zu erstellen, bei der die zweite Dimension keine Dimension enthält. Entscheiden Sie: ein 1-dimensionales Array oder eine 2-dimensionale mit mindestens Größe 1 für jede Dimension – lazary

+0

Übrigens ist Ihre b-Variable nicht sichtbar außerhalb von 'for' loop – MGoksu

Antwort

4

Wenn Sie ein Array instanziiert, Sie geben es Größen, nicht Indizes. So verwenden, um den 0-ten Index, benötigen Sie mindestens eine Größe von 1.

int[][] a = new int[3][1]; 

Dies wird eine 3x1 „Matrix“ instanziiert, was bedeutet, dass gültige Indizes für den ersten Satz von Klammern sind 0, 1 und 2; während der einzige gültige Index für die zweite Gruppe von Klammern 0 ist. Das sieht aus, was Ihr Code erfordert.

public static void main(String[] args) { 

    // When instantiating an array, you give it sizes, not indices 
    int[][] arr = new int[3][1]; 

    // These are all the valid index combinations for this array 
    arr[0][0] = 3; 
    arr[1][0] = 5; 
    arr[2][0] = 6; 

    int max = 1; 

    // To use these variables outside of the loop, you need to 
    // declare them outside the loop. 
    int x = 0; 
    int y = 0; 

    for (; x < arr.length; x++) { 
     for (y = 0; y < arr[x].length; y++) { 
      if (arr[x][y] > max) { 
       max = arr[x][b]; 
       System.out.println(max); 
      } 
      System.out.println(arr[x][y]); 
     } 
    } 

    System.out.println(arr[x][y]); 
} 
+0

jetzt funktioniert es, danke – Ali12

1

Sie speichern 3 Elemente im ersten Array.

versuchen Sie dies int [] [] a = neu int [3] [1];