这是我目前拥有的代码。
public static void testClosestToMean() {
Scanner input = new Scanner(System.in);
System.out.println("How many rows does your array have: ");
int rows = input.nextInt();
System.out.println("How many columns does your array have: ");
int columns = input.nextInt();
double[][] numbers = new double[rows][columns];
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
System.out.println("Enter a value for your array: ");
double values = input.nextDouble();
numbers[rows][columns] = values;
}
}
}
当我运行程序时,我到达 System.out.println("Enter a value for your array: ");
但是,当我输入单个数字并按 Enter 键时,会发生此错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
我只是普遍陷入困境,需要指导,甚至需要解释为什么此错误不断发生。
最佳答案
二维数组的行索引从 0
到 row-1
,从 0
到 columns-1
为列。但是,您尝试访问数字[行][列],这被称为“离一错误”,因为您访问的索引均比最大可能索引大一。如果您想解决此问题,请将 rows
替换为 i
,将 columns
替换为 j
,如下所示,
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
System.out.println("Enter a value for your array: ");
double values = input.nextDouble();
numbers[i][j] = values;
}
}
这样,您就可以通过从第一行(索引 0
)开始填充每一行,直到到达最后一行(索引 i- 1)。当您填充每一行时,您可以从第一列(索引
0
处)开始逐列填充,直到到达最后一列(索引 j-1 处)
)。
关于用用户输入填充二维数组时出现 java.lang.ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43299994/