我正在编写一个简单的程序来从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());
}
}
}
答案 0 :(得分:1)
尝试替换行...
while(scanner.hasNextLine())
......有这样的事情:
while(scanner.hasNextInt())
这是Scanner类的另一种方法。
我猜测你正在扫描的输入是以int值以外的其他内容结束的。
答案 1 :(得分:-1)
最可能的问题是你可能忘记了数组的初始化。
需要一些东西master = new ObservationList[MAX_INDICIES];
在while循环前面。
事实并非如此,您需要提供更多代码,以便我们了解您的工作情况。