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