首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的While-loop不工作

Java中的While-loop不工作
EN

Stack Overflow用户
提问于 2011-09-25 04:05:33
回答 7查看 3.6K关注 0票数 0

好的,那么问题是:

我想输入一堆数字,一组随机的数字,比如说5个数字。在该数字的末尾,我将添加第六个数字0,这将是我的循环结束的信号。

为了实现这一点,这就是我要做的。

我运行我的程序,这是我的输入:

1%3%4%2%5%0

所以我想让程序打印出来

%1%3%4%2%5“序列结尾”

下面是我的代码,据说会做这样的事情(所有这些都在main方法中):

代码语言:javascript
复制
Scanner input = new Scanner(System.in);
System.out.println("Alright, what?");
boolean notZero = true;
while (notZero)  
 {
   System.out.println(input.nextInt());
   if (input.nextInt() == 0)
       System.out.println("End of sequence");
       notZero = false;    
 }

然而,以下是我得到的结果:

http://i.imgur.com/4Th43.jpg

有趣的是,如果我没有while循环stop,并且我再次输入相同的数字列表(1 3 4 2 5 0),它将输出3和2,这是我的数字列表中的偶数-所有这些都让我更加烦恼。

有什么想法吗?

EN

回答 7

Stack Overflow用户

发布于 2011-09-25 04:08:51

将所有的代码块包括if代码块都用大括号括起来!

这一点:

代码语言:javascript
复制
if (foo) 
  doSomething();
  doSomethingElse();

不是像你想的那样工作,它的表现是

代码语言:javascript
复制
if (foo) {
  doSomething();
}

doSomethingElse();

相反,将所有块都用大括号括起来,这样就不会有任何疑问:

代码语言:javascript
复制
if (foo) {    
  doSomething();
  doSomethingElse();
}
票数 3
EN

Stack Overflow用户

发布于 2011-09-25 04:11:02

这看起来像是一个学习练习,所以我将给您一些提示,而不是直接告诉您。

  1. 在你选择的集成开发环境中,告诉它自动缩进你的代码。仔细查看if语句及其结果的位置。
  2. 仔细考虑nextInt()的作用以及调用它的位置和频率。
票数 2
EN

Stack Overflow用户

发布于 2011-09-25 04:15:15

在循环中调用input.nextInt()两次,只打印其中一次。实际上,这就像跳过输入中的每隔一个数字。更改代码以将下一个输入存储到一个变量中,然后检查该变量。我怀疑这不是您的实际代码,因为如果没有将notZero设置为false作为检查条件的结果,它将只执行一次循环。顺便说一句,notZero是一个糟糕的变量名。它应该是语义的,而不是表示它的期望值。如果输入值不是输入结束指示符,您还希望只打印输入值。

代码语言:javascript
复制
Scanner input = new Scanner(System.in);

System.out.println("Alright, what?");

boolean endOfInput = false;

while (!endOfInput) {
   int next = input.nextInt();

   if (next == 0) {
      System.out.println("End of sequence");
      endOfInput = true;
   }  
   else {
      System.out.println(next);
   } 
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7541571

复制
相关文章

相似问题

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