ArrayIndexOutofBounds - 帮助?

时间:2011-10-23 21:33:46

标签: java

问题发生在int [][]tam = new int [a][b]。这只是那条线。我是Java新手,来自C ++背景。

//"Exercitiul" 3
Scanner input = new Scanner(System.in);//instructiune scanner
DataInputStream dis4 = new DataInputStream(System.in);
DataInputStream dis5 = new DataInputStream(System.in);
String st1 = null;
String st2 = null;
try{
  System.out.println("Introduceti numarul de Randuri"); 
  st1 = dis4.readLine();
  System.out.println("Introduceti numarul de Coloane"); 
  st2 = dis5.readLine();
}

catch (IOException ioe) {
ioe.printStackTrace();
}

int a = Integer.parseInt(st1);
int b = Integer.parseInt(st2);

int [][]tam = new int[a][b];

System.out.println("Verificare " + tam[a][b]);
System.out.println("Introduceti Elementele Matricei ");

for (int m=0 ; m < tam.length ; m++)
for  (int n=0 ; n < tam[i].length ; n++){

tam[m][n] = input.nextInt();//instructiune scanner
}

System.out.println("Matricea A: ");
for (int m=0 ; m < tam.length ; m++)
{     System.out.println();
    for  (int n=0 ; n < tam[i].length ; n++)
        System.out.print(tam[m][n]+" ");
          }

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Program.main(Program.java:95)

3 个答案:

答案 0 :(得分:3)

如果数组a的长度为n,则元素为a[0]a[n-1]。 在您的情况下,您将tam分配为int[a][b],矩阵的右下角元素为tam[a-1][b-1]

此外,我认为您希望m作为内部循环for (int n=0 ; n < tam[i].length ; n++)中的索引,而不是i

答案 1 :(得分:1)

如果该行抛出异常,则可能意味着a或b为&lt; = 0.检查输入值。

答案 2 :(得分:1)

我认为问题在于

System.out.println("Verificare " + tam[a][b]);

tam初始化为new int[a][b]。这意味着它的第一个索引从0变为-1,其第二个索引从0变为b - 1.在Java中,数组索引从0开始。所以tam[a][b]确实超出范围。