2013-02-18 131 views
-1

循環條件沒有停止我的工作是2個的用戶輸入之間增加了所有的偶數的分配。例; userNum1 = 3,userNum2 = 12。這兩個數字也包含在加法中(只有在偶數時)。 我已經在我的while循環的條件了一個小時,似乎無法找出原因,當加入數數命中的用戶的第二個數字(在這種情況下,12),它不停止。而當它應該

這是我的代碼。

int evenCount = 0; 
int evenSum = 0; 
int oddNumberFixer = 0; 
int evenAddNumber = 0; 

while (evenAddNumber <= num2 || evenCount < num2) 
    { 
     oddNumberFixer = num1 + 1; 

     if ((num1 % 2) != 0) 
     { 

      evenAddNumber = oddNumberFixer + evenCount; 

      evenSum = evenAddNumber + evenSum; 
      evenCount = evenCount + 2; 



     } 
     else 
     { 
      evenAddNumber = num1 + evenCount; 
      evenSum = evenAddNumber + evenSum; 
      evenCount = evenCount + 2; 

     } 

    } 
    System.out.println("The sum of the included evens is " + evenSum); 
+7

不要只盯着你的代碼,通過它一步行由行與調試。這將允許您檢查變量的值。 – 2013-02-18 00:05:43

回答

1

你需要考慮你的算法需要做什麼。請注意,無論您的電話號碼是否均勻,您的電話號碼都會增加。此外,你只需要檢查一個數字是否是一次。這看起來很明顯,但是一旦你知道一個數字是偶數的話,加2就會給你另一個偶數。如果在開始編碼之前花更多時間思考它,算法可能會更簡單。

你可以嘗試甚至開始一個循環之前,確保數量爲。然後,你可以嘗試,爲什麼您使用的是while循環

for(int i = yourEvenNumber; i <= num2; i+=2) { 
    //add them up here  
} 
1

我不知道,這似乎是一個for循環類型的應用程序。如果你做了一些初始化確保第一個數字是你要添加的第一個偶數,你可以一次通過2個步驟,即:

int first = num1; 

if(first % 2 == 1) 
    first++; 

for(int i = first; i <= num2; i += 2) 
{ 
    //summing code 
} 

至於你的while循環,我懷疑這是因爲OR語句在你的條件允許循環繼續,直到evencount> = num2。這保證循環將繼續進行1/2 * num2次迭代。在你的例子(3,12),則期望的循環迭代的5倍(4 + 6 + 8 + 12),但與你的while循環的第二部分的條件,這將迭代6次(= evencount 0,2, 4,6,8,10)。