这是我目前的代码。
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键时会出现此错误:
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException
我只是陷入困境,想要指导甚至解释为什么会出现这种错误。
答案 0 :(得分:4)
对于行,您的2D数组的索引从0
到row-1
,对于列,0
到columns-1
。但是,您试图访问numbers[rows][columns]
,这被称为“一个一个错误”,因为您的访问索引每个都超过最大可能索引。如果您要解决此问题,请将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
),将条目添加到2D数组中。当您填充每一行时,您将从第一列(索引0
)开始逐个填充列,直到到达最后一列(索引j-1
)。
答案 1 :(得分:1)
线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException
意味着你超越了元素。请注意,0也可以是数组中的项目。
例如:
array[0] = "Hey";
array[1] = "Sup! wow... just wow";
如果我做了
system.out.println(array[2]);
会打印错误
但如果我做了
system.out.println(array[0], array[1]);
它会起作用。
答案 2 :(得分:0)
在您的代码中:
numbers[rows][columns] = values;
我相信你的意思
numbers[i][j] = values;
由于