我正在进行一项任务,将两个用户输入之间的所有偶数相加。例; 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);
答案 0 :(得分:1)
您需要考虑算法需要做什么。请注意,无论您的号码是否均匀,您都会增加evenSum。此外,您只需要检查一个数字是否只有一次。这看起来很明显,但是一旦你知道一个数字是偶数,加2将总是给你另一个偶数。如果你在开始编码之前花了更多的时间来考虑它,那么算法会简单得多。
您可以尝试在开始循环之前确保数字是均匀的。然后你可以尝试
for(int i = yourEvenNumber; i <= num2; i+=2) {
//add them up here
}
答案 1 :(得分:1)
我不确定你为什么使用while循环,这看起来像for循环类型的应用程序。如果你做了一些初始化,确保第一个数字是你想要添加的第一个偶数,你可以一次逐步进入2,即:
int first = num1;
if(first % 2 == 1)
first++;
for(int i = first; i <= num2; i += 2)
{
//summing code
}
至于你的while循环,我怀疑是因为条件中的OR语句允许循环继续,直到evencount&gt; = num2。这保证了循环将继续进行1/2 * num2次迭代。在你的例子中(3,12),你期望循环迭代5次(4 + 6 + 8 + 12),但是你的while循环的第二部分是条件的,它将迭代6次(evencount = 0,2, 4,6,8,10)。