我正在从 Cay S. Horstmann 和 Gary Cornell 的 Java 书中练习 HashSet,我认为第 687 页的示例代码中存在错误。我们有一个 Scanner
将单词导入 HashSet
它看起来像这样(我删除了一些不需要的代码以使问题更明显):
Set<String> words = new HashSet<String>();
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String word = in.next();
words.add(word);
}
问题是没有办法停止这个循环。或者也许我缺少什么?
为了停止循环,我添加了另一个静态辅助方法:
public static boolean isStop(Scanner in) {
if (in.next().equals("stop")) {
return true;
}
return false;
}
现在主要代码如下所示:
Set<String> words = new HashSet<String>();
Scanner in = new Scanner(System.in);
while (!isStop(in)) {
String word = in.next();
words.add(word);
}
还有其他方法可以停止扫描器循环吗?我不敢相信那本书的作者犯了错误?
最佳答案
一旦此条件为假,循环就会停止:
in.hasNext()
也就是说,没有更多的词了。
循环内部是读取下一个单词的命令:
in.next()
因此将继续读取单词,直到 Scanner 没有更多单词可读为止。此循环将在扫描器正在读取的任何内容结束时终止。
关于java - Java 书中扫描器的错误示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26488816/