黑马程序员技术交流社区

标题: 循环跳出的问题 [打印本页]

作者: 王雷1    时间: 2013-11-21 15:19
标题: 循环跳出的问题
本帖最后由 王雷1 于 2013-11-22 16:51 编辑

public class asdf
{        
        public static void main(String[] args)
        {
        er();
        }
        public static void er()
        {         int y=0;
                for(int x=0;x<28;x++)
                {
                        if(x%3==0)
                        {
                                y++;
                                
                        }if((y+x)>=28)
                                break;
                        System.out.println("需要买"+x+"瓶"+y);
                }
        }
}为什么x+y没有大于或等于28的时候循环就跳出了
打印出来的结果是x=20;y=y;,这是为什么呀?

作者: 王雷1    时间: 2013-11-21 15:20
上面的Y值打错了、y=7
作者: 凌风    时间: 2013-11-21 17:15
需要买0瓶8
需要买1瓶8
需要买2瓶8
需要买3瓶9
需要买4瓶9
需要买5瓶9
需要买6瓶10
需要买7瓶10
需要买8瓶10
需要买9瓶11
需要买10瓶11
需要买11瓶11
需要买12瓶12
需要买13瓶12
需要买14瓶12
你什么地方弄错了吧,正常应该是这样的输出。
作者: smileven    时间: 2013-11-21 17:46
本帖最后由 smileven 于 2013-11-22 10:38 编辑

public class asdf
{        
        public static void main(String[] args)
        {
                er();
        }
        public static void er()
        {       int y=0;
                for(int x=0;x<28;x++)
                {
                        if(x%3==0)
                        {
                                y++;  
                                System.out.println("需要买"+x+"瓶------"+"y="+y);      
                        }
                        if((y+x)>=28)
                                break;
                        
                }
        }
}
你的代码结构有问题,这样写就可以了。
因为当x=20时,y=7。
当x=21时,y=8。此时会执行到break语句,brake后面的语句不会再执行,
所以最后的x=21,y=7没有输出来。
应该将输出语句放在break前面。
[attach]30131[/attach]

作者: 小楼一夜听春雨    时间: 2013-11-21 19:18
楼上正解,输出语句不应该放在结束语句的后面,若放在后面,x=21,Y=8,跳出循环条件满足,后面的输出语句不会执行了
作者: 王雷1    时间: 2013-11-22 16:50
这是一个题,我已经用while循环的方式做出来了,但是for还是没有弄明白是怎么回事,考虑这可能也是要定义加循环的x在内应该有3个变量,大家想想吧




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