[英]My final result doesn't match the intended result for a while loop
import java.util.Scanner;
public class CHP4Ex
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("enter a n: ");
int n = scan.nextInt();
int i=0;
int sum=0;
while ((i%2 == 0 && i<=n))
{
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
我想:写一个循环,计算2到100(含2和100)之间的所有偶数之和。
但是,我键入的任何内容都会给出0的答案,而不是预期的结果。
该循环在i = 1处停止,因此您的结果是:
while ((i%2 == 0 && i<=n)) { //when i = 1, i%2!=0 -> stop
sum = sum + i;
i++;
}
您应该使用for循环:
for(int i=0;i<n;i+=2) {
sum+=i;
}
尝试这个,
while (i <= n)
{
if (i % 2 == 0)
{
sum = sum + i;
}
i++;
}
循环
for (int j = i; j <= n; j += 2)
{
sum = sum + j;
}
您在while循环中的条件是错误的:
while ((i%2 == 0 && i<=n)) ...
它只是将sum
和加0,然后退出while
循环。 确实在第二次迭代中:
i % 2 == 0 // i = 1; 1 % 2 == 0 is FALSE
使用此代替:
sum = 0;
for (int i = 0; i <= n; i+=2) {
sum += i;
}
您的while循环有问题。 一旦我变成1就出来
尝试这个
while(i<=n) {
if(i%2==0)
sum+=i;
i++
}
我第一次是奇数(在1时),循环将退出
while ((i%2 == 0 && i<=n)) <<- i%2 == 0 causing problems
因此答案总是为零。
您希望i的范围在循环中,但要在if语句中达到均匀条件; 所以
while (i<=n)
{
if (i%2 == 0){
sum = sum + i;
}
i++;
}
尽管当然for循环更适合在一定范围内运行
for(int i=0;i<n;i++){
if (i%2 == 0){
sum = sum + i;
}
}
当然这效率不高,最好跳过所有奇数
for(int i=0;i<n;i+=2){
sum = sum + i;
}
但是,因为您可以直接通过公式来执行此操作,所以我假设可以将其扩展到更复杂的条件
我输入的任何内容都会给出0的答案,而不是预期的结果。
因为循环在i=1
处结束
在while
循环中拆分条件。 因为您使用&&
运算符,所以两个语句始终都必须为真。 当i=1
,第一个条件失败,循环中止。
仅将i<=n
放入循环条件,然后将if(i%2)
放在Sum
的加法周围。
while (i<=n)
{
if (i%2 == 0)
{
sum = sum + i;
}
i++;
}
您从wile循环中退出的语句是错误的。 在第二次迭代中, 我将为1,而i%2 == 0将给出false。 有你的问题。
简单的错误! 您有&&
循环中! 所以第一个条件对于i=1
失败,因此您跳出循环!
有几个答案指出,偶数测试是第一次退出。 问题在于两个测试不相关。 您想在达到极限后退出。 而您想要在偶数时添加。 分开两个测试
import java.util.Scanner;
public class CHP4Ex
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("enter a n: ");
int n = scan.nextInt();
int i=0;
int sum=0;
while (i<=n)
{
if (i%2 == 0)
{
sum = sum + i;
}
i++;
}
System.out.println(sum);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.