【问题标题】:Using an if statement with a while loop?使用带有while循环的if语句?
【发布时间】:2015-02-28 21:09:28
【问题描述】:

我正在尝试做这个问题:

设计一个程序,读取以 -9999 结尾的数字列表并打印出输入的总和。

我正在修改程序,以便仅对 1100 之间的值求和,并且如您所见,我已尝试实现 if 语句。但是,什么都没有改变,这部分让我很难过。我已经坚持了很长时间,代码如下:

import java.util.Scanner;

public class Summing {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int Number, Sum = 0;

        System.out.println("Enter a list of whole numbers, finished by -9999");
        Number = sc.nextInt();

        if (Number > 0 || Number < 100);
        while (Number != -9999) {
            Sum = Sum + Number;
            Number = sc.nextInt();
        }

        System.out.println("Sum is " + Sum);
    }
}

【问题讨论】:

    标签: java loops while-loop


    【解决方案1】:

    if 语句移到循环内。现在if 语句在进入循环之前只被执行一次(它什么也不做,这要感谢紧跟在条件后面的;)。您希望它用于每个值。

    另外请注意,我将 || 更改为 &amp;&amp;。否则,例如 101 将匹配,它不在 0 和 100 之间。最后,a = a + b 总是可以更简洁地写成a += b

    while (Number != -9999) {
        if (Number > 0 && Number < 100) {
            Sum += Number;
        }
        Number = sc.nextInt();
    }
    

    作为另一种风格变化(这是非常普遍的约定),您应该考虑将变量名称更改为小写。

    【讨论】:

      【解决方案2】:

      您将if 放在while 循环之前, 它有一个空的(= 什么都不做)。 无论如何,条件也是错误的,因为 Number &gt; 0 || Number &lt; 100 将匹配 所有 数字。您想将|| 更改为&amp;&amp;

      这应该可行:

      public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          int Number, Sum = 0;
      
          System.out.println("Enter a list of whole numbers, finished by -9999");
          Number = sc.nextInt();
      
          while (Number != -9999) {
              if (1 < Number && Number < 100) {    
                  Sum += Number;
              }
              Number = sc.nextInt();
          }
      
          System.out.println("Sum is " + Sum);
      }
      

      【讨论】:

        【解决方案3】:

        您已经很接近了,但是 if 测试应该在循环中(并且您可能应该使用 {} 大括号)。按照惯例,Java 变量名以小写字母开头,我更喜欢使用+= 运算符来添加到sum。此外,要检查您的范围,您在逻辑上需要一个和(而不是一个或)。类似的,

        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("Enter a list of whole numbers, finished by -9999");
            int number = sc.nextInt();
            int sum = 0;
            while (number != -9999) {
                if (number > 0 && number < 100) {
                    sum += number;
                }
                number = sc.nextInt();
            }
            System.out.println("Sum is " + sum);
        }
        

        【讨论】:

          【解决方案4】:

          您的 if 在 while 循环之前。把它放在循环中。

          【讨论】:

            猜你喜欢
            • 2012-12-02
            • 2016-02-16
            • 2021-03-18
            • 2012-03-12
            • 2013-04-20
            • 1970-01-01
            • 1970-01-01
            • 2015-05-19
            • 2015-08-03
            相关资源
            最近更新 更多