使用二维数组时ArrayIndexOutOfBoundsException

时间:2016-12-16 13:09:47

标签: java arrays

我的代码是

Scanner sc = new Scanner(System.in);
int v=sc.nextInt();
int s=sc.nextInt();
int[][] n = new int [v][s];
for (int i=0; i<n.length; i++) {
    for (int j=0; j<n[v].length-1; j++) {
        n[i][j]=sc.nextInt();
    }
}
System.out.print(n[v][s]);
System.out.println();

当我想编译它时,终端打印出来:

  

java.lang.ArrayIndexOutOfBoundsException:4
  在Plevel.main(Plevel.java:13)

有人可以告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

我想错误就在这里:

System.out.print(n[v][s]);

数组的索引从0到v-1,从0到s-1

如果你有一个数组3x3,它显示如下:

v[0]s[0] v[0]s[1] v[0]s[2]
v[1]s[0] v[1]s[1] v[1]s[2]
v[2]s[0] v[2]s[1] v[2]s[2]

所以如果你想得到最后一个元素,你应该写:

System.out.print(n[v-1][s-1]);

答案 1 :(得分:0)

 Scanner sc = new Scanner(System.in);
    int v=sc.nextInt();
    int s=sc.nextInt();
    // V variable becomes row and S variable come column, since you already know row length and column length you can use same for looping
    int[][] n = new int [v][s];

    for (int i = 0; i < v; i++) {
        for (int j = 0; j < s; j++) {
            n[i][j] = sc.nextInt();
        }
    }

    // If you want to print last value
    System.out.print(n[v-1][s-1]);

数组索引从0开始,因此当数组大小为3时,可以使用索引0,1,2。如果您使用3作为索引,那么它将抛出您在查询中发布的异常