黑马程序员技术交流社区

标题: 大家帮我看看我的这段代码为什么只循环一次 [打印本页]

作者: ilvsoft    时间: 2014-4-7 18:35
标题: 大家帮我看看我的这段代码为什么只循环一次
本帖最后由 ilvsoft 于 2014-4-7 18:37 编辑

        do
                                {
                                        check1=scanner1.nextInt();
                                        if(check1==1)
                                                fish=1;
                                        else if(check1==2)
                                                dog=1;
                                        else if(check1==3)
                                                cat=1;
                                        else if(check1==-1)
                                                fish=0;
                                        else if(check1==-2)
                                                dog=0;
                                        else
                                                cat=0;
                                        if(cat==1)
                                                System.out.println(cat);
                                        if(dog==1)
                                                System.out.println(dog);
                                        if(fish==1)
                                                System.out.println(fish);
                        }while(dog==1&&fish==1&&cat==1||cat==1&&fish==1&&dog==0||dog==1&&cat==1&&fish==0);
                        
-----------------------------------------------------------------------------------------------------------//dog  fish  cat 都是int型初始化为0


作者: ilvsoft    时间: 2014-4-7 18:45
大神来帮我分析分析,我是做农夫带狗猫鱼过河的,这个循环就是让他一直来回带动物过河,除非是狗和猫一起了或者猫和鱼一起,或者3个都过河了,过河的为1,没过河为0,比如check1=3是我获取我的键盘敲入的数字,3代表猫过河于是cat=1;
作者: osully    时间: 2014-4-7 18:45
我觉得 你输入任何数字
dog == 1 && fish == 1 && cat == 1 || cat == 1 && fish == 1&& dog == 0
这句话也不可能是true啊
不是true 怎么循环啊
作者: ilvsoft    时间: 2014-4-7 18:48
osully 发表于 2014-4-7 18:45
我觉得 你输入任何数字
dog == 1 && fish == 1 && cat == 1 || cat == 1 && fish == 1&& dog == 0
这句话也 ...

我用的do{}while{};结构啊 不是while{}结构啊 ,突然想明白了,我可以在前面加个非,谢谢提醒了我,吧这个搞混淆了
作者: ilvsoft    时间: 2014-4-7 18:58
试了下,还是最好让while(true),在循环体里面判断,如果都过河了就break,或者另外2种会打架的场景也break 好些




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