黑马程序员技术交流社区

标题: 求偶数个数代码的疑惑??? [打印本页]

作者: 高丽华    时间: 2013-12-30 17:12
标题: 求偶数个数代码的疑惑???
本帖最后由 高丽华 于 2014-1-1 11:03 编辑

//使用do-while算出1-100之间的偶数总和。
class Test_7  
{
        public static void main(String[] args)
        {
                int sum=0;
                int x=0;
                do
                {
                        //if (x%2==0)
                        x+=2;//求偶数个数为什么写x+=2能往下执行代码,而写if (x%2==0)却不能向下执行代码啊???                        
                                     sum=sum+x;
                }
                while (x<=100);
                System.out.println(sum);
        }
}

作者: 轩辕冰晨    时间: 2013-12-30 17:52
楼主如果写if (x%2==0),x的值一直都是0,循环就进入死循环了。
作者: 董月峰    时间: 2013-12-30 17:56
public class test22 {
        public static void main(String[] args)
        {
                int sum=0;
                int x=0;
                do
                {
                        if(x%2==0)
                                sum=sum+x;
                        x=x+2;
                }
                while(x<=100);
                System.out.print(sum);
        }
}
可以运行结果2550
作者: 董月峰    时间: 2013-12-30 18:13
if(x%2==0)
      sum=sum+x;
  x++;
楼主,你的代码用if应该这样。
或者直接sum=sum+x;
x=x+2
作者: 由然自美    时间: 2013-12-30 18:47
你要写if(x%2==0),因为你并没有让x的值增加,所以一直就会打印0,成了死循环
应该是if(x%2==0){
sum= sum+x;
x++;//让x的值自增这才行
}
作者: 快乐的黑马    时间: 2013-12-30 18:51
楼主提问的问题是不是有点问题?[论坛提问] 求偶数个数代码的疑惑???应该是求某一范围的偶数个数啊!再说偶数的和,你的写法也有问题,你把sum = sum+x放在x+=2前面,然后用了do while方法,也就是说,开始始就让sum为2,偶数0没有参与运算,后面的102倒是参加了,最后计算的结果也不对。建议你还是用for循环语句好点。
作者: 快乐的黑马    时间: 2013-12-30 18:59
再说说你那个::求偶数个数为什么写x+=2能往下执行代码,而写if (x%2==0)却不能向下执行代码啊???         
%是取余符号,从程序一开始,0进来,然后0%2==0,后面判断,0<100,符合,就接着进去do执行,如此反复,就是一个死循环。
下面是我写的一个代码:
class Test5
{
        public static void main(String[] args) throws IOException
        {
               
        int sum=0;
        int x=0;
        for( x=0; x<=100; x+=2)
                {
                        sum = sum + x;
                }
                System.out.println("sum="+sum);
        }
}

作者: hurryup    时间: 2013-12-30 20:02
由然自美 发表于 2013-12-30 18:47
你要写if(x%2==0),因为你并没有让x的值增加,所以一直就会打印0,成了死循环
应该是if(x%2==0){
sum= sum+x;

这哥们说的对,楼主把x的初始值设为1,do{...}里面加个自增x++就可以了.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2