加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java书中扫描器的错误示例?

发布时间:2020-12-15 04:23:09 所属栏目:Java 来源:网络整理
导读:我正在从Cay S. Horstmann和Gary Cornell的 Java书中练习HashSet,我认为第687页的示例代码中有一个错误.我们有一个Scanner导入HashSet的单词,它看起来像这样(我删除了一些不需要的代码来制作一个问题更明显): SetString words = new HashSetString();Scanne
我正在从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()

因此,在扫描仪无法读取更多单词之前,将继续读取单词.该循环将在扫描仪正在读取的任何内容结束时终止.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读