A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王雷1 中级黑马   /  2013-11-21 15:19  /  1406 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王雷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黑马币 +3 收起 理由
乔兵 + 3

查看全部评分

5 个回复

倒序浏览
上面的Y值打错了、y=7
回复 使用道具 举报
需要买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-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前面。

回复 使用道具 举报
楼上正解,输出语句不应该放在结束语句的后面,若放在后面,x=21,Y=8,跳出循环条件满足,后面的输出语句不会执行了
回复 使用道具 举报
这是一个题,我已经用while循环的方式做出来了,但是for还是没有弄明白是怎么回事,考虑这可能也是要定义加循环的x在内应该有3个变量,大家想想吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马