2013-12-09 44 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); 
      } 

好運