黑马程序员技术交流社区
标题:
求解while的一个小问题
[打印本页]
作者:
林其荣
时间:
2013-1-11 15:17
标题:
求解while的一个小问题
本帖最后由 林其荣 于 2013-1-11 23:57 编辑
<p>
public void show(){
boolean bo=true;
while(bo){}
System.out.println();
while(true){}
System.out.println();
}
为什么在while(true){}的情况下后面的输出语句会影响后面的语句错误
而在while(bo)加入参数的情况下就不影响后面的语句呢
while(true)和while(bo)除了while(bo)参数可以改变参数值结束循环外他们又有什么区别
</p><p> </p>
复制代码
作者:
詹卓锋
时间:
2013-1-11 16:55
你写while(true){} 你的括号内的条件一直为true,虚拟机会一直执行,“一直执行”就是说虚拟机根本到不了在while大括号的语句( System.out.println(); ),虚拟机会提示“
无法访问语句
”,所以: 在while(true){}的情况下后面的输出语句会影响后面的语句错误。
而在while(bo)加入参数的情况下就不影响后面的语句呢
while(true)和while(bo)除了while(bo)参数可以改变参数值结束循环外他们又有什么区别 这我也不懂,求大神。。。
条件为true的错误.jpg
(6.49 KB, 下载次数: 42)
下载附件
2013-1-11 16:38 上传
条件为true的错误
作者:
王圳伟
时间:
2013-1-11 16:56
详细的不知道你问嘛,while 条件为(true),你觉得有意思吗? while 循环判断boolean 为false才跳出循环,给一个固定值true(或者说true为常量) 不是自找没趣吗?
我大概知道你意思了,条件你给true程序在永远循环,程序是不会执行到下面一句,所以系统给警告
作者:
胡勇敏
时间:
2013-1-11 17:04
如果while(ture)你的机器跑到冒烟(毕老师的解释是这么说的)也跳不出这个循环了,后面的代码压根没机会执行了。所以会提示有访问不到的代码。
作者:
李桐
时间:
2013-1-11 17:06
无限循环啊 编译器是一行一行读取的 如果单做出来一个变量,编译器是看不出来问题的,但如果放在一行里就不行了
作者:
黑马-小龙
时间:
2013-1-11 17:10
while(do)的时候,do是一个变量
while(ture)的时候,ture是常量,无线死循环当然会循环
作者:
张云杰
时间:
2013-1-11 19:19
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的时候 如果没有手动跳出,它的执行结果永远都是死循环
}
}
}
作者:
陈丽莉
时间:
2013-1-11 20:26
是这样的,while的用法是while(判断语句){循环中执行语句},你的程序是不是把要放在循环执行的语句放在大括号外面了?
关于为什么while(bo)不报错而while(true)报错:
是因为bo是可以通过赋值改变的,比如bo=false;这样就不会产生死循环。所以当循环条件为可更改的时候,即使你执行了空循环,虚拟机也放任了。(因为它没有具体到去程序中判断bo有没有在适当时机被改为false);
而while(true)没有break是会进入死循环的,(break是关键字,很好判断)那么不仅程序的执行无法自动停止,该语句后面的语句也无法执行到,所以报错了。
while(true)和while(bo)它们的区别?
除了可以改变bo的参数来结束循环,在判断语句上就没什么区别了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2