黑马程序员技术交流社区
标题:
关于for:为什么每个值都会打印两次啊?
[打印本页]
作者:
king2042
时间:
2014-3-4 20:34
标题:
关于for:为什么每个值都会打印两次啊?
//需求:1~100之间偶数的和;
class ForTest2
{
public static void main(String[] args)
{
int sum = 0;
for (int y=1; y<=100 ; y++ )
{
if (y%2==0)
{
sum+=y;
}
System.out.println("sum="+sum);
}
}
}
{@5AXZI~_N4COQR7GB$D%{F.jpg
(70.57 KB, 下载次数: 32)
下载附件
2014-3-4 20:32 上传
求1~100之间偶数的和
作者:
e.c
时间:
2014-3-4 20:46
你没放在if里面。所以奇数打印一次,偶数打印一次。
作者:
戚兴海
时间:
2014-3-4 20:53
亲,当这个数不是偶数的时候,只是不执行if里面的语句哦,下面的输出语句是属于for循环的,还是每次都执行的,循环100次,必须打印100个值啊,只是相邻的一个偶数和一个基数的值会一样而已
作者:
osully
时间:
2014-3-4 21:09
实际上 按照你的 题目 不应该把打印放在 循环外面吗
不过按照你问的
y=1 sum =0
y=2 sum +=y sum =2
y=3 sun=2
y=4 sum+=y sun = 6
y= 5 sun =6
依次即可看出 每个值都会打印两次 啊
class ForTest2
{
public static void main(String[] args)
{
int sum = 0;
for (int y=1; y<=100 ; y++ )
{
if (y%2==0)
{
sum+=y;
}
}
System.out.println("sum="+sum);
}
}
复制代码
作者:
山治0712
时间:
2014-3-4 21:11
sum的值是偶数的和没错,到那时显示的话应该放在if里面显示,否则奇数的时候也会显示偶数和
作者:
zjf
时间:
2014-3-4 21:17
放在for和if里面都是不行的,它会把每次的结果都输出的。
因为你的要求是输出和,所以你要等for循环完成后才能输出,也就是要把sop输出语句调到for循环外才行。
class ForTest2
{
public static void main(String[] args)
{
int sum = 0;
for (int y=1; y<=100 ; y++ )
{
if (y%2==0)
{
sum+=y;
}
}
System.out.println("sum="+sum);
}
}
作者:
天凌蓝
时间:
2014-3-4 21:21
本帖最后由 天凌蓝 于 2014-3-4 21:23 编辑
因为你的for循环当偶数时,求出了sum的值,而当奇数时,sum不会被累加,但是你的 System.out.println("sum="+sum);因为放在for循环里面,所以奇数时照样打印一次,所以就会出现两次打印的值是一样的,代码可以改成这样。
class ForTest
{
public static void main(String[] args)
{
int sum = 0;
for (int y=1; y<=100 ; y++ )
{
if (y%2==0)
{
sum+=y;
System.out.println("sum="+sum);//每一次求和
}
}
System.out.println("sum="+sum);//总和
}
}
复制代码
作者:
文江江
时间:
2014-3-4 21:27
输入语句放在了for循环中啊,亲。。。
public static void main(String[] args) {
int sum=0;
for (int i = 1; i <=100; i++) {
if(i%2==0){
sum+=i;
}
}
System.out.print("sum="+sum);
}
复制代码
作者:
遗忘的青春年华
时间:
2014-3-4 23:22
输出语句放if语句里面就可以了,当y%2!=0时候,sum+=y;不执行,但是输出语句执行啊,只要把输出语句放if语句里面就可以了
作者:
king2042
时间:
2014-3-5 11:32
谢谢各位解答
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2