黑马程序员技术交流社区

标题: 关于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, 下载次数: 17)

求1~100之间偶数的和

求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

依次即可看出 每个值都会打印两次 啊

  1. class ForTest2
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int sum = 0;
  6.                 for (int y=1; y<=100 ; y++ )
  7.                 {
  8.                         if (y%2==0)
  9.                         {
  10.                                         sum+=y;
  11.                         }
  12.                 }
  13.                 System.out.println("sum="+sum);
  14.         }
  15. }
复制代码

作者: 山治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循环里面,所以奇数时照样打印一次,所以就会出现两次打印的值是一样的,代码可以改成这样。
  1. class ForTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int sum = 0;
  6.                 for (int y=1; y<=100 ; y++ )
  7.                 {
  8.                         if (y%2==0)
  9.                         {
  10.                               sum+=y;
  11.                                                           System.out.println("sum="+sum);//每一次求和
  12.                         }
  13.                
  14.                 }
  15.                                 System.out.println("sum="+sum);//总和
  16.         }
  17. }
复制代码




作者: 文江江    时间: 2014-3-4 21:27
输入语句放在了for循环中啊,亲。。。
  1.         public static void main(String[] args) {
  2.                 int sum=0;
  3.                 for (int i = 1; i <=100; i++) {
  4.                         if(i%2==0){
  5.                                 sum+=i;
  6.                         }
  7.                 }
  8.                 System.out.print("sum="+sum);
  9.         }
复制代码

作者: 遗忘的青春年华    时间: 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