0

我不明白为什么每次循环时都不能正确加起来。当输入 -9999 时,while 循环不输出总和也存在问题。

import java.util.*;
public class list 
{
   public static void main(String args []) 
   {
      Scanner sc = new Scanner(System.in);
      int Number, Sum = 0;
      System.out.println("Enter the list of whole numbers, terminate by -9999> ");
      Number = sc.nextInt();
      Sum += Number;
      while (Number != -9999) 
      {
         if (Number > 1 && Number < 100)
         {
            Sum += Number;
            Number = sc.nextInt();
         } 
         else
           System.out.println("Please enter a number between 1 and 100");
         Number = sc.nextInt();
      }
      System.out.println("Sum is " + Sum);
   }
}
4

2 回答 2

5

您在一个循环中可能会要求一个数字两次。一次进入if街区,一次你的else街区之后。没有括号,只有第一个语句是块。代替

else
    System.out.println("Please enter a number between 1 and 100");
  Number = sc.nextInt();

尝试

else
{
    System.out.println("Please enter a number between 1 and 100");
    Number = sc.nextInt();
}

此外,您的第一个数字被添加两次;while从循环之前删除第一个添加。

此外,虽然它是合法的并且可能是您的实际要求,但这条线

if (Number > 1 && Number < 100)

不会接受1100。您的要求可能包括同时接受1100,在这种情况下,条件应该是Number >= 1 && Number <= 100

顺便说一句,通常 Java 变量以小写字母开头,而类以大写字母开头,这意味着变量NumberSum应该分别重命名numbersum

于 2013-12-09T22:33:35.223 回答
0

1 固定当您计划更好地使用条件循环时do while()

2 里面有一个没用的 sc.nextInt()if (Number >= 1 && Number <= 100)混淆了你所有的计算

3 在 1 和 100 之间我想Number >= 1 && Number <= 100是你需要的,除非你不希望应用程序接受 1 和 100

Scanner sc = new Scanner(System.in);
            int Number, Sum = 0;
            System.out.println("Enter the list of whole numbers, terminate by -9999> ");
            Number = sc.nextInt();

           do {
              if (Number >= 1 && Number <= 100)
              {
               Sum += Number;
              } 
             else
                System.out.println("Please enter a number between 1 and 100");

              Number = sc.nextInt();
            } while (Number != -9999);
            System.out.println("Sum is " + Sum);
          }

祝你好运

于 2013-12-09T22:40:27.860 回答