2013-02-18 52 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)。