2013-12-09 48 views
0

我不明白为什么这是不正确的每次循环加起来。当输入-9999时while循环不输出总和也有问题。Java虽然循环不正确添加

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

尝试使用调试器。 –

+4

另外,让你的IDE重新格式化你的代码 - 这会使错误更加明显。 –

+1

同时将'if(Number> 1 && Number <100)'换成'if(Number> = 1 && Number <= 100)' –

回答

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

+0

为什么不直接在else语句中移除'sc.nextInt() ? – Sionnach733

+1

更好地在'if - else'块之外取'Number = sc.nextInt();'。 –

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

好运