扫描程序和while循环添加

时间:2016-04-05 02:44:28

标签: java

我昨天刚刚发布,但我又回来了另一个问题,我知道这个问题的答案,但我坚持他们是如何得到的。

import java.util.*;
public class test {

public static void main(String[] args) {
    String s = "12 13 14 15 18 16 17 20 2";
    Scanner c = new Scanner(s);
    int sum = 0;
    while(c.nextInt()% 2 == 0)
        sum += c.nextInt();
    System.out.println(sum);
  }
}

输出为44,但我自己获得了46。我可能做错了,因为我对c.nextInt()的工作方式不太熟悉。

我在想:

12 % 2 = 0, so add 13
14 % 2 = 0, so add 15
18 % 2 = 0, so add 16
17 % 2 =/= 0, so skip
20 % 2 = 0, so add 2
for a total of = 46
我错过了什么吗?

编辑:解决了,忘了循环不只是“跳过”。我笨了

3 个答案:

答案 0 :(得分:0)

是的,这里的答案是44.这里你重复while循环,直到(number%2 == 0)变为FALSE。 在你的情况下:

你正在添加13 + 15 + 16和下一个数字来检查while条件是17

这里(17%2 == 0)为FALSE因此条件失败并且没有进入循环。

总共有44(13 + 15 + 16)

我希望这会有所帮助!

答案 1 :(得分:0)

以下是每次循环的细分:

  • c.nextInt()得到12,12%2 == 0,所以这个条件为TRUE
    • sum = 0和c.nextInt()= 13因此sum + = 13等于13
  • 第二个c.nextInt()获得14,14%2 == 0,因此该条件为TRUE
    • sum = 13且c.nextInt()= 15因此sum + = 15等于28
  • c.nextInt()获得18,18%2 == 0,因此该条件为TRUE
    • sum = 0和c.nextInt()= 16,所以sum + = 16等于44
  • c.nextInt()得到17,17%2 == 1,所以这个条件为FALSE,循环退出

打印44

答案 2 :(得分:0)

Java while循环用于执行语句,直到条件成立为止。如果条件为false,则此while循环将会中断。所以

17%2!= 0,这个while循环将会中断。所以总和= 44。