import java.util.Scanner;
import java.io.*;
import java.util.ArrayList;
public class Test
{
public static void main (String args[]) throws java.io.IOException
{
Scanner s = new Scanner(new File("filepath"));
ArrayList list = new ArrayList();
while (s.hasNext()){
if(s.hasNextInt()){
list.add(s.nextInt());
}
}
s.close();
System.out.println(list);
}
}
我正在尝试从每行具有以下格式的文本文件中读取整数:文本整数文本.
到目前为止,这是我所拥有的,但是当我编译并运行它时,无论出于什么原因,它都不会结束[].
请注意,我更改了文件路径只是为了将其上传到此处,这不是问题.
解决方法:
When I compile and run it prints never ending
这个循环是元凶:
while (s.hasNext()){
if(s.hasNextInt()){
list.add(s.nextInt());
}
}
考虑一下当扫描器具有hasNext时会发生什么,但是无论next令牌是什么,它都不是int.在这种情况下,您的循环将变成无限循环,因为循环的主体不会消耗任何东西,从而使扫描程序处于与循环开始时完全相同的状态.
要解决此问题,请在您的if中添加else,读取s.next(),然后忽略结果:
while (s.hasNext()){
if(s.hasNextInt()){
list.add(s.nextInt());
} else {
s.next();
}
}