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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林其荣 中级黑马   /  2013-1-11 15:17  /  2339 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 林其荣 于 2013-1-11 23:57 编辑
  1. <p>
  2. public void show(){
  3.   boolean bo=true;
  4. while(bo){}
  5.    System.out.println();
  6.   while(true){}
  7.   System.out.println();

  8. }

  9. 为什么在while(true){}的情况下后面的输出语句会影响后面的语句错误
  10. 而在while(bo)加入参数的情况下就不影响后面的语句呢
  11. while(true)和while(bo)除了while(bo)参数可以改变参数值结束循环外他们又有什么区别
  12. </p><p> </p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
你写while(true){}  你的括号内的条件一直为true,虚拟机会一直执行,“一直执行”就是说虚拟机根本到不了在while大括号的语句( System.out.println(); ),虚拟机会提示“无法访问语句”,所以:   在while(true){}的情况下后面的输出语句会影响后面的语句错误。

  • 而在while(bo)加入参数的情况下就不影响后面的语句呢
  • while(true)和while(bo)除了while(bo)参数可以改变参数值结束循环外他们又有什么区别     这我也不懂,求大神。。。

条件为true的错误.jpg (6.49 KB, 下载次数: 51)

条件为true的错误

条件为true的错误
回复 使用道具 举报
详细的不知道你问嘛,while 条件为(true),你觉得有意思吗? while 循环判断boolean 为false才跳出循环,给一个固定值true(或者说true为常量) 不是自找没趣吗?
我大概知道你意思了,条件你给true程序在永远循环,程序是不会执行到下面一句,所以系统给警告
回复 使用道具 举报
如果while(ture)你的机器跑到冒烟(毕老师的解释是这么说的)也跳不出这个循环了,后面的代码压根没机会执行了。所以会提示有访问不到的代码。
回复 使用道具 举报
无限循环啊 编译器是一行一行读取的 如果单做出来一个变量,编译器是看不出来问题的,但如果放在一行里就不行了
回复 使用道具 举报
while(do)的时候,do是一个变量
while(ture)的时候,ture是常量,无线死循环当然会循环

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 说道重点了

查看全部评分

回复 使用道具 举报
public class Test {
        public static void main(String[] args) {
                boolean flag = true;
                while(flag){ //这里为true的时候 无限死循环语句
                        while(true){ //然后又进入一个无限死循环语句
                                System.out.println("aaaa");
                                break; //如果这里和下面没加break的话, 直接报错 ,这里加break的意思是说 跳出当前的while(true)的语句
                        }
                        break; //这里是跳出while(flag)语句 ,记住, while语句为true的时候 如果没有手动跳出,它的执行结果永远都是死循环
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

回复 使用道具 举报
      是这样的,while的用法是while(判断语句){循环中执行语句},你的程序是不是把要放在循环执行的语句放在大括号外面了?

关于为什么while(bo)不报错而while(true)报错:
    是因为bo是可以通过赋值改变的,比如bo=false;这样就不会产生死循环。所以当循环条件为可更改的时候,即使你执行了空循环,虚拟机也放任了。(因为它没有具体到去程序中判断bo有没有在适当时机被改为false);
    而while(true)没有break是会进入死循环的,(break是关键字,很好判断)那么不仅程序的执行无法自动停止,该语句后面的语句也无法执行到,所以报错了。

while(true)和while(bo)它们的区别?
    除了可以改变bo的参数来结束循环,在判断语句上就没什么区别了。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 最赞!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马