我对 Scanner 类的 hasNext() 函数有 2 个问题。
我的循环应该有 4 次迭代,但我的循环是无限的。
这是代码:
import java.util.Scanner;
public class main {
public static void main(String[] args) {
String t = "Munich London Paris New_York";
Scanner sc = new Scanner(t);
while (sc.hasNext()) {
System.out.println("GOOD");
}
}
}
以下是来自 Oracle 官方文档的 hasNext() 函数的定义:
如果此扫描器的输入中有另一个令牌,则返回 true。此方法可能会在等待输入扫描时阻塞。扫描仪不会前进超过任何输入。
那么,他们的意思是:“扫描仪不会前进超过任何输入。”?
您需要致电
next()
。另外,请确保使用 \s+
分隔符。
请注意,类名应以大写字母开头。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String t = "Munich London Paris New_York";
Scanner sc = new Scanner(t).useDelimiter("\\s+");
while (sc.hasNext()) {
System.out.println(sc.next());
}
sc.close();
}
}
结果:
Munich
London
Paris
New_York