我正在尝试从一个文件中读取--我的代码如下:
try
{
Scanner inFile = new Scanner (new FileReader("input.txt"));
while(inFile.hasNextLine())
{
first = inFile.next();
second = inFile.next();
System.out.println("first: " + first);
System.out.println("second: " + second);
}
inFile.close();
}
catch(FileNotFoundException exception)
{
System.out.println("Unable to locate file");
}文件文本是:
Fred 10
John 13
Bob
Jill 43因为某些行不包含任何文本,程序会崩溃。例如,当程序试图在第三行(包含Bob的值)中给"second“一个值时会崩溃。
如果存在值,我如何创建?或者忽略如果没有价值?
发布于 2018-04-16 08:11:31
您可以使用useDelimiter函数并再次迭代行。
while(inFile.hasNextLine())
{
Scanner sc = new Scanner(inFile.nextLine());
sc.useDelimeter(" ");
while(sc.hasNext())
System.out.println(sc.next());
}发布于 2018-04-16 08:09:33
您的程序(不正确)假设每行总是有两个值。如果这不是真的,你就得考虑这个案子。一种方法可以(未经测试):
while(inFile.hasNextLine()) {
first = inFile.next();
if (!inFile.hasNext()) {
continue; // ignore this line
}
second = inFile.next();
...
}与您的问题无关:您正在错误地关闭inFile。这个信息可能会派上用场。
https://stackoverflow.com/questions/49852356
复制相似问题