首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayList数据的Java扫描器

ArrayList数据的Java扫描器
EN

Stack Overflow用户
提问于 2017-03-10 19:47:29
回答 1查看 120关注 0票数 1

我正在尝试使用do-while循环来获取ArrayList的信息,但我得到了以下输出:

请输入您的号码(键入一个字母完成): 3. 请输入您的号码(键入一封信以完成): 请输入您的号码(键入一个字母完成):

但操作成功,ArrayList按预期包含所有三个数字(2、3、4),即使没有为其中之一打印提示符

代码语言:javascript
复制
    do {
        num = getNumber("Please input your number (type a letter to finish): ");
        data.add(num);
    } while (console.hasNextInt());

getNumber方法

代码语言:javascript
复制
public static int getNumber(String prompt) {
    System.out.print(prompt);
    return console.nextInt();
}

如何让它打印所有数字的提示?

EN

回答 1

Stack Overflow用户

发布于 2017-03-10 20:34:21

您的主要问题是在nextInt()之前调用hasNextInt()

你需要做它的other way around

通常,nextInt()只消耗等待使用hasNextInt()的数据,但是如果没有以这种方式接收数据,nextInt() 本身就会阻塞。这就是导致你的问题的原因。

查看程序的控制流:

  1. getNumber被称为
  2. prompt打印
  3. 输入的nextInt()
  4. 输入和getNumber返回
  5. 在do-while循环中,hasNextInt()块用于输入。 这里是问题,您的程序再次等待输入,但是没有新的提示符有机会被打印!
  6. 在下一次迭代中,nextInt()只消耗步骤5中等待的int
  7. 现在,恢复hasNextInt()之前通常的nextInt()模式,因此您的程序从这一点开始按照预期的方式运行。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42726583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档