问一个for 嵌套 if的问题,新手晕了。

im1981 2008-03-27 04:39:58
一个简单的语句:
for(int i=0;i<10;i++)
{
System.out.println(i);
}

改成这样下面这样的:

for(;;x++)
{
if(x<10)
{
System.out.println(x);
}
}

为什么循环不停止,而且在一段时间后输出-2147472773;
-2147472772;等等的这样一堆的数呢?

刚学编程,不太明白啊。
...全文
94 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
im1981 2008-03-27
  • 打赏
  • 举报
回复
谢谢,
我明白了。看来我应该从基础的存储方法开始学啊。
tobenq 2008-03-27
  • 打赏
  • 举报
回复
那个循环没有终止条件啊。
for的判断语句为空,那么会默认true一直循环,需要循环内部做break中断循环。
TYLEO 2008-03-27
  • 打赏
  • 举报
回复
因为超过了最大值之后,就变成负的最小值了,当然小于10了。建议看看计算机存储数据的方法,最高位是符号位
im1981 2008-03-27
  • 打赏
  • 举报
回复
对了,又想个问题,为什么超出INT范围后,数字又会输出了呢?没有输出语句啊,这是相当于错误提示那种吗?有JDK自动输出的?
popo0218 2008-03-27
  • 打赏
  • 举报
回复
x没有初始化
im1981 2008-03-27
  • 打赏
  • 举报
回复
谢谢各位朋友解答。

如TYLEO朋友提示,用break语句退出就好了。出现-2147472773这样数字的结果我想应该是lastsweetop 所说的,总之感谢各位朋友。结帖。
西北刘五 2008-03-27
  • 打赏
  • 举报
回复
for(;;x++)
{

}
就是个死循环
所以就不会停了
吴冬冬 2008-03-27
  • 打赏
  • 举报
回复
int n=2147483647;
System.out.println(n+1);
你试下就明白了
TYLEO 2008-03-27
  • 打赏
  • 举报
回复
因为没有break,x 到了 10 以上之后还没停,之后x加到了int的最大值,在加 1 的话就会变成负的int最大值。(有符号数在计算机中是用补码存储的)
michelecindy 2008-03-27
  • 打赏
  • 举报
回复
楼上正解
没有初始化 x
吴冬冬 2008-03-27
  • 打赏
  • 举报
回复
x不断增加最后超过int界限 成为了负数
吴冬冬 2008-03-27
  • 打赏
  • 举报
回复
int x=0;
没有初始化x
TYLEO 2008-03-27
  • 打赏
  • 举报
回复
for(;;x++)
{
if(x <10)
{
System.out.println(x);
}
else
{
break;
}
}

62,623

社区成员

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

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