java循环中错误

hwy1782 2009-03-29 05:03:22
package test;

public class ThreadTest_1 extends Thread{
int count=10;
public void run()
{
while(true)
{
count--;
if(count>0)
{
try{
Thread.sleep(1000);
}catch(Exception e)
{
e.printStackTrace();
}
System.out.println("pig"+count--);

}
}
}
public static void main(String arg[])
{
ThreadTest_1 t=new ThreadTest_1();
t.start();
}
}



结果很奇怪:
pig9
pig7
pig5
pig3
pig1

中间可能有一两秒钟,后面就出现下面的值

pig2147483647
pig2147483645
pig2147483643
pig2147483641
pig2147483639
pig2147483637
……


这是为什么啊?
...全文
79 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostgant 2009-04-02
  • 打赏
  • 举报
回复
int 值 的越界
LZ 要注意了,很危险的,
容易造成系统崩溃
xiguagege 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huguang 的回复:]
java中int 类型的范围是:-2147483648 到2147483647好像
你看你的程序,只有count>0才sleep
也就是count--成小于0的数,就是while(true)的循环,而且没有sleep,
会很快在负数越界,count <-2147483648
就会变成count==2147483647
所以你的count>0又会成立,继续sleep并打印输出
[/Quote]
在下面的代码间每次都将count的值打印出来看看
count--;
if(count>0)
Study_Work_2009 2009-03-30
  • 打赏
  • 举报
回复
up
tianpan000 2009-03-30
  • 打赏
  • 举报
回复
值的越界
heavilyarmed 2009-03-30
  • 打赏
  • 举报
回复
看看
huguang 2009-03-29
  • 打赏
  • 举报
回复
java中int 类型的范围是:-2147483648 到2147483647好像
你看你的程序,只有count>0才sleep
也就是count--成小于0的数,就是while(true)的循环,而且没有sleep,
会很快在负数越界,count<-2147483648
就会变成count==2147483647
所以你的count>0又会成立,继续sleep并打印输出

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧