我是Java的新手,也是一般编程人员。我最近开始使用数组,并在书中练习了我认为id试一试。目标是使用scanner类将每个数字分配给2d数组中的不同单元格。这就是我对该方法的要求。但无论我如何改变它,我似乎无法获得理想的结果。我最终得到每个单元格中的最后一个数字,或者我得到一个错误。请帮忙。
int row = 0;
int col = 0;
while (A[row][col] != -1)
{
for (row = 0; row < A.length; row++)
{
for (col = 0; col < A[row].length; col++)
A[row][col] = scan.nextInt();
}
}
答案 0 :(得分:3)
扫描需要在最里面的循环中进行。此时,您可能希望重新阅读您所在的章节,并在发布到SO之前花费更长时间处理问题。
...
for (int col = 0; col < A[row].length; col++){
A[row][col] = temp;
temp = scan.nextInt();
}
...
您可能还会发现在观看程序执行时打印输出值非常有用。在您阅读System.out.println(temp)
后的位置后添加temp
。这会使问题变得明显。您还需要更改while
循环结构。截至目前,它没有多大意义。
答案 1 :(得分:1)
根据您的评论......这应该按照您的要求进行。你遇到的问题是你不能在没有某种条件的情况下突破你的内循环。
请注意,我将A
更改为a
;变量永远不应该以大写字母开头。
int a[][] = new int[20][20];
int row = 0;
int col = 0;
int current = 0;
for (row = 0; row < a.length, current != -1; row++)
{
for (col = 0; col < a[row].length; col++)
{
try
{
current = scan.nextInt();
if (current == -1)
{
break;
}
else
{
a[row][col] = current;
}
}
catch ( NoSuchElementException e)
{
System.out.println("I hit the end of the file without finding -1!");
current = -1;
break;
}
catch ( ArrayIndexOutOfBoundsException e)
{
System.out.println("I ran out of space in my 2D array!");
current = -1;
break;
}
}
}
我个人不会使用嵌套循环,并走这条路:
int a[][] = new int[20][20];
int row = 0;
int col = 0;
int current = 0;
while (scan.hasNextInt())
{
current = scan.nextInt();
if (current == -1)
{
break;
}
a[row][col] = current;
col++;
if (col == a[row].length)
{
row++;
col = 0;
if (row == a.length)
{
System.out.println("I ran out of space in my 2D array!");
break;
}
}
}