String[][] tArray=new String[2][4];
for (int row=0; row<=2;row++){
for (int col=0,count=0;col<=4;col++ ,count++){
Scanner input=new Scanner(System.in);
System.out.print("Please Enter the name " +count+ ":");
tArray[row][col]=input.next();
}
}
for (int row=0; row<=2;row++){
for (int col=0;col<=4;col++){
System.out.println(tArray[row][col]);
}
}
错误: -
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:4 在array.testArray.main(testArray.java:15)
答案 0 :(得分:2)
问题是
for (int col=0,count=0;col<=4;col++ ,count++){
你只能达到3而不是4,因为索引从0开始。使用此
for (int col=0,count=0;col<4;col++ ,count++){
同样在这里
for (int row=0; row<=2;row++){ // incorrect
这样做
for (int row=0; row<2;row++){
答案 1 :(得分:2)
请记住,Java的索引从零开始,到length - 1
结束!你试图找到阵列的三个“行”,其中只有两个:
for (int row=0; row<=2;row++){ //0, 1, 2 - that's three options even though the array's size is only 2
同样有五列只有四列:
for (int col=0,count=0;col<=4;col++ ,count++){ //0, 1, 2, 3, 4 - that makes five
使用<
代替<=
应该解决这个问题,尽管我还建议使用数组的length
属性来找出每次数组的实际大小而不是硬编码。即使您更改了数组的大小,它也会因人为错误而更安全,并且可以正常工作:
for (int row=0; row < tArray.length; row++){
和
for (int col=0,count=0;col < tArray[row].length; col++ ,count++){
最后,即使这有点偏离主题,col
和count
似乎总是具有相同的值,所以我建议删除它们。
答案 2 :(得分:0)
原因:您正在迭代循环超过项目长度。
问题在这里:
String[][] tArray=new String[2][4];//means 2 rows and 4 columns
for (int row=0; row<=2;row++)//row 0 to 2 => 0,1,2 iterates 3 times
{
for (int col=0,count=0;col<=4;col++ ,count++)//column 0 to 4 => 0,1,2,3,4 iterates 5 times
{
//code
}
}
for (int row=0; row<=2;row++)//row 0 to 2 => 0,1,2 iterates 3 times
{
for (int col=0;col<=4;col++)//column 0 to 4 => iterates 0,1,2,3,4
{
//code
}
}
<强>解决方案:强>
String[][] tArray=new String[2][4];
for (int row=0; row<2;row++){
for (int col=0,count=0;col<4;col++ ,count++){
Scanner input=new Scanner(System.in);
System.out.print("Please Enter the name " +count+ ":");
tArray[row][col]=input.next();
}
}
for (int row=0; row<2;row++){
for (int col=0;col<4;col++){
System.out.println(tArray[row][col]);
}
}