提问人:Alex 提问时间:9/16/2023 最后编辑:OneCricketeerAlex 更新时间:9/16/2023 访问量:66
hasNext() 的问题
Issue with hasNext()
问:
我对 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。此方法可能会在等待输入扫描时阻塞。扫描仪不会前进到任何输入。
那么,他们的意思是:“扫描仪不会超过任何输入。
答:
0赞
Mr. Polywhirl
9/16/2023
#1
您需要致电 .此外,请确保使用 .next()
\s+
请注意,类名应以大写字母开头。
/* Filename: Main.java */
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
评论
1赞
OneCricketeer
9/16/2023
该文件现在也需要重命名为 Main.java
0赞
Grinding For Reputation
9/16/2023
此外,每个单词之间不需要那么多空间。你可以只放一个空格,除非你希望代码更清晰。
0赞
Louis Wasserman
9/16/2023
我本来会投赞成票,但我不相信需要设置不同的分隔符。
0赞
Mr. Polywhirl
9/16/2023
@LouisWasserman是的,对不起。似乎默认分隔符检查所有空格。所以这真的不需要。
评论
Main
sc.hasNext()
sc.next()
next()