Java While循环没有正确添加

时间:2013-12-09 22:29:07

标签: java loops while-loop nested-if

我无法弄清楚为什么每次循环都没有正确添加。当键入-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);
   }
}

2 个答案:

答案 0 :(得分:5)

你在循环中要求一个数字可能两次。进入if块后, 后{em} 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应该重命名为number和{{1}分别。

答案 1 :(得分:0)

1已修复当您计划更好地使用条件循环时,请使用do while()

2 if (Number >= 1 && Number <= 100)内部有一个无用的sc.nextInt(),它混淆了你所有的计算

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);
          }

祝你好运