错误:线程'main'中的异常java.lang.ArrayIndexOutOfBoundsException:0

时间:2014-10-10 20:25:48

标签: java arrays runtime-error main

import java.util.Scanner;
public class TestMultiDimenArray
{
    private static int row;
    private static int column;
    public static int [][] table1 = new int [row][column];

    public static int [][] get ( int a, int b){
        row = a;
        column = b;
        Scanner keyboard = new Scanner(System.in);
        for (int n = 0; n < a; n++){
            for (int m = 0; m < b; m++){
                table1[n][m] = keyboard.nextInt();
            }
        }
        return table1;
    }

    public static void display (int [][] array1){
        for (int n = 0; n < row; n++){
            for (int m = 0; m < column; m++){
                System.out.print(table1[n][m] + " ");
            }
            System.out.println();
        }
    }
    public static void main(String[] args){
            get(3,3);
    }
}

程序编译成功但是当我运行它时,它会返回错误。我该如何解决?这就是我能解释的问题。系统有什么问题,告诉我在我能告诉你的时候提供更多细节。

2 个答案:

答案 0 :(得分:3)

此语句声明一个长度为0且宽度为0的2D数组。

public static int [][] table1 = new int [row][column];

这是因为在初始化类时没有为rowcolumn分配任何内容;只有在调用get时才会分配它们。因此,Java会为它们分配默认值0

从参数中指定rowcolumn值后初始化数组。

public static int [][] table1;

public static int [][] get ( int a, int b){
    row = a;
    column = b;
    table1 = new int [row][column];
    Scanner keyboard = new Scanner(System.in);
    // Rest unchanged
}

答案 1 :(得分:0)

您无法动态设置table1数组的大小。 确保a和b低于或等于原始和列。

(如果您重新创建了table1,我认为您无法获取任何数据)