错误:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:0 [关闭]

Posted

技术标签:

【中文标题】错误:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:0 [关闭]【英文标题】:Error: exception in thread 'main' java.lang.ArrayIndexOutOfBoundsException: 0 [closed] 【发布时间】:2014-12-06 02:28:28 【问题描述】:
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);
    

程序编译成功,但是当我运行它时,它返回错误。我该如何解决?这就是我能说的关于我的问题的全部内容。告诉我要提供更多细节的系统出了什么问题。

【问题讨论】:

您是否尝试调试过您的程序?你觉得你在用public static int [][] table1 = new int [row][column];做什么?达到此语句时rowcolumn 的值是多少? Java 不是 Excel... 【参考方案1】:

该语句声明了一个长度为 0 宽度为 0 的二维数组。

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

【讨论】:

【参考方案2】:

您不能动态设置 table1 数组的大小。 确保 a 和 b 小于或等于 raw 和 column。

(如果您重新创建 table1,我认为您将无法将任何数据放入其中)

【讨论】:

以上是关于错误:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:0 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

错误:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:0 [关闭]

在后台创建的 NSManagedObject 变成了主线程上的错误

线程“主”java.lang.NoClassDefFoundError 中的异常:错误名称

线程“主”java.util.InputMismatchException nextDouble() 错误中的异常? [复制]

主进程被kill或者错误退出,子线程还在跑怎么处理

为啥从主线程调用时,`std::promise::set_value` 会抛出错误?