数组索引超出绑定异常,同时运行程序以查找最大的数组

时间:2014-03-02 09:06:53

标签: java arrays

以下是代码:从绑定异常中获取数组索引

class Max {
    public static void main(String args[]) {
        int a[][];
        Scanner src = new Scanner(System. in );
        System.out.println("Enter the no of rows");
        int rows = src.nextInt();
        a = new int[rows][5];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < 5; j++) {
                a[i][j] = src.nextInt();
            }
        }
        System.out.println("Array is");
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print("  " + a[i][j]);
            }
            System.out.println();
        }
        int l = a[0][0];
        int i;
        for (i = 0; i < rows; i++)
            l = a[i][0];
        for (int j = 0; j < 5; j++)
            if (l < a[i][j])
                l = a[i][j];
        System.out.println("Max" + l);
    }
}

在运行时它给出以下内容: 线程“main”中的异常 java.lang.Array索引超出绑定异常:3 在Max.main Max.java:33 任何人都可以在代码中暗示出错了吗????

2 个答案:

答案 0 :(得分:2)

您错过了for (i = 0; i < rows; i++)之后for (int j = 0; j < 5; j++)循环位于第一个循环中。

没有它,这给出了:

for (i = 0; i < rows; i++)
  l = a[i][0];
// End of the for i loop, now i = rows. 
for (int j = 0; j < 5; j++)
  if (l < a[i][j])  // i = rows: bang.
    l = a[i][j];

答案 1 :(得分:0)

试试这个:

public static void main(String args[]) {
    int a[][];
    Scanner src = new Scanner(System. in );
    System.out.println("Enter the no of rows");
    int rows = src.nextInt();
    a = new int[rows][5];
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < 5; j++) {
            a[i][j] = src.nextInt();
        }
    }

    System.out.println("Array is");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < 5; j++) {
            System.out.print("  " + a[i][j]);
        }
        System.out.println();
    }
    int l = a[0][0];
    int i;
    for (i = 0; i < rows; i++) {
        l = a[i][0];
        for (int j = 0; j < 5; j++)
            if (l < a[i][j])
                l = a[i][j];
    }
    System.out.println("Max" + l);
}