Java 通过扫描仪更新二维阵列
我对Java和编程都是新手。我最近开始使用数组,并在书中找到了一个练习,我想我可以试试。目标是使用scanner类读取文件,并将每个数字分配给二维数组中的不同单元格。这就是我的方法。但是无论我如何改变它,我似乎都不能得到想要的结果。要么我得到每个单元格中的最后一个数字,要么我得到一个错误。请帮忙Java 通过扫描仪更新二维阵列,java,arrays,java.util.scanner,Java,Arrays,Java.util.scanner,我对Java和编程都是新手。我最近开始使用数组,并在书中找到了一个练习,我想我可以试试。目标是使用scanner类读取文件,并将每个数字分配给二维数组中的不同单元格。这就是我的方法。但是无论我如何改变它,我似乎都不能得到想要的结果。要么我得到每个单元格中的最后一个数字,要么我得到一个错误。请帮忙 int row = 0; int col = 0; while (A[row][col] != -1) { for (row = 0; row < A.length; row++) { f
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();
}
}
int行=0;
int col=0;
while(A[行][col]!=-1)
{
对于(行=0;行
扫描需要在最里面的循环中进行。在这一点上,你可能想重新阅读你正在阅读的章节,在发布到SO之前花更长的时间解决问题
...
for (int col = 0; col < A[row].length; col++){
A[row][col] = temp;
temp = scan.nextInt();
}
...
。。。
for(int col=0;col
您可能还会发现,在观看程序执行时,打印出值是很有用的。在读入
temp
的点后添加System.out.println(temp)
。这将使问题变得显而易见。您还需要在循环构造时更改。到目前为止,这没有多大意义 根据您的评论。。。这应该符合你的要求。你所面临的问题是,如果没有外部循环的某种条件,你就无法突破内部循环
请注意,我将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;
}
}
}
事实上,你在每一行的每一列中反复插入相同的数字。你想干什么<代码>将每个数字分配给2d数组中的不同单元格
有点。。。含糊不清。我正在尝试使用扫描仪从文件中读取几个值,然后将每个数字插入一个单元格,直到读取到-1,这时while循环应该停止填充表格。嘿,我在发布之前尝试了你所说的内容,但当我这样做时,我得到了一个noSuchElementException。我继续尝试修复while循环,但什么也没做。您可以看到上面编辑的代码。感谢您的帮助。请了解if(…)
后面应始终跟有{…}
。这同样适用于else
。这很有帮助。不管怎样,你的答案是+1:)@dantuch-我理解在添加额外代码时有人跟踪并破坏条件的风险。话虽如此。。。有时候我就是不喜欢;)不过,当向新程序员展示如何做一些事情时,我会编辑。(尽管我可以说人们在添加代码时应该注意这些事情,因为它是一个有效的构造…)
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;
}
}
}