黑马程序员技术交流社区
标题:
while语句的问题
[打印本页]
作者:
聖手`书生
时间:
2013-4-10 22:20
标题:
while语句的问题
class Ticket implements Runnable//extends Thread
{
private int tick = 100;
public void run()
{
while(true)//真是阴沟里翻船,不明白true判断的是哪里的内容,求指点。
{
if(tick>0)
{
System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
}
}
}
}
class TicketDemo
{
public static void main(String[] args)
{
Ticket t = new Ticket();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
Thread t3 = new Thread(t);
Thread t4 = new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
作者:
孤独的鸟人
时间:
2013-4-10 22:29
是tick的值
作者:
ld5128702
时间:
2013-4-10 22:32
从while(true)开始循环,也就是说当程序执行到 while(true){ } 时循环条件永远为真,也就是所说的无限循环,这样用时必须在循环体重定义退出循环的语句,否则程序将陷入死循环,也就是里面的if(tick>0)判断条件,当条件不满足时跳出循环。
作者:
通行天下
时间:
2013-4-10 22:36
本帖最后由 通行天下 于 2013-4-10 22:37 编辑
我改了一下,现在可以啦;希望对你有帮助。
class Ticket implements Runnable//extends Thread
{
private int tick = 100;
public void run()
{
while(true)//在这里true只是while循环的一个判断依据而已
{
if(tick>0)
{
System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
}
//当ticket=0时,就跳出循环,结束运行;不然程序就一直会处于等待中,不会结束。
else
break;
}
}
}
class TicketDemo
{
public static void main(String[] args)
{
Ticket t = new Ticket();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
Thread t3 = new Thread(t);
Thread t4 = new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
复制代码
作者:
lcjasas
时间:
2013-4-10 22:41
while(true) 判断 if(tick>0)
tick--,当0<tick<100--->true,返回while(true)中继续判断;
当tick<0------>falsel,跳出while语句
作者:
刘策
时间:
2013-4-10 22:42
此程序如果不按ctrl + c 的话是不会停下来,因为 有while(true)是让线程一直运行,你while里没有结束循环的标志。
作者:
熊永标
时间:
2013-4-10 22:44
while(条件语句){
}
只要条件为true就执行循还,而此例直接给好了true,虚拟机就继续执行while循还,对于根据什么作判断,也当然就是true本身了,为true则继续循还,为false就终止循还.这是原理,while循还的规定.
作者:
邹铭钰
时间:
2013-4-10 22:45
while(true)死循环,在if语句后加一个 else 语句,里面break;跳出循环。
作者:
陈培茹
时间:
2013-4-10 22:45
貌似会陷入死循环呀!
作者:
飞天小猪猪
时间:
2013-4-10 22:53
While(boolean){}
while循环中接收的是一个boolean参数,这个参数为真,循环体就开始循环,为假就跳出循环了。
while(true)//真是阴沟里翻船,不明白true判断的是哪里的内容,求指点。
{
if(tick>0)
{
System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
}
}
在你的这个程序里,true判断的就是这个while后面的{}里的代码。因为条件是true while语句就会无限的循环这里面的代码 即if(tick>0)
{
System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
}
作者:
奋斗2013
时间:
2013-4-10 23:03
楼上回答的应该可以帮你了。
while(true){ }就是死循环。你需要用break;跳出循环
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2