0

我正在编写一个简单的程序来读取 System.in 并将信息放入 LinkedLists 数组中。我有一个非常简单的问题,但几个小时后我似乎找不到问题。希望它很好而且很明显。抛出 NoSuchElementException 的代码段是这样的:

while(scanner.hasNextLine())
{
        int index = scanner.nextInt();
        master[index].addObservation(scanner.next());
}

错误是从调用 nextInt() 方法的行中抛出的。当我按 Cntrl+Z 结束输入时出现问题。出于某种原因,即使没有另一行输入,我的代码仍在进入 while 循环。输入格式如下:

1 doug
2 edwin
5 casey
4 fred
Cntrl+Z

(电脑号码后跟用户名)

pc 号用于数组索引,用户名将进入链表。我尝试将 EOF 字符放在最后一行的末尾,并作为最后一行的第一个字符,没有任何变化。任何帮助是极大的赞赏。谢谢!

全班

import java.util.*;

public class TermReport 
{

        private static LineUsageData[] master = new LineUsageData[501];
        private static Scanner scanner = new Scanner(System.in);

        public static void main(String[] args)
        {
            //skip index 0 for index to PC clarity
            for(int i=1; i<501; i++)
            {
                master[i] = new LineUsageData();
            }

            while(scanner.hasNextLine())
            {
                int index = scanner.nextInt();
                master[index].addObservation(scanner.next());
            }
        }
}
4

2 回答 2

1

换行试试...

while(scanner.hasNextLine())

...有这样的事情:

while(scanner.hasNextInt())

这是 Scanner 类的另一种方法。

  • boolean hasNextInt()
    如果此扫描仪输入中的下一个标记可以使用 nextInt() 方法解释为默认基数中的 int 值,则返回 true。

我猜您正在扫描的输入以非 int 值结束。

于 2013-09-05T00:56:26.483 回答
-1

最可能的问题是您可能忘记了初始化数组。你需要一些类似的东西

master = new ObservationList[MAX_INDICIES];

在while循环前面。

如果不是这种情况,您将需要提供更多代码,以便我们可以看到您在做什么。

于 2013-09-05T00:50:05.860 回答