通过扫描仪更新2d阵列

时间:2011-09-18 04:37:33

标签: java arrays java.util.scanner

我是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();   
        }
}

2 个答案:

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