Java 通过扫描仪更新二维阵列

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

我对Java和编程都是新手。我最近开始使用数组,并在书中找到了一个练习,我想我可以试试。目标是使用scanner类读取文件,并将每个数字分配给二维数组中的不同单元格。这就是我的方法。但是无论我如何改变它,我似乎都不能得到想要的结果。要么我得到每个单元格中的最后一个数字,要么我得到一个错误。请帮忙

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;
        }
    }
}