这个测试的结果为什么是这样呢?

renwangxing 2008-04-20 11:58:42
public class Trying {
public static void main(String[] args){
int i=2;
while(i-->0){
System.out.println("doing it from i is"+i);
}System.out.println("finnis");
}

}


这个运行的结果为什么是:
doing it from i is1
doing it from i is0
finnis

而不是:
doing it from i is1
finnis
...全文
96 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiny_Sun 2008-04-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tyrone_jlu 的回复:]
while(i-->0)
这条语句是先用i与0比较 然后i再减1

第一次循环i为2 2>0 进入循环体后 i为1
第二次循环i为1 1>0 进入循环体后 i为0
第三次循环i为0 跳出
[/Quote]
tyrone_jlu 2008-04-20
  • 打赏
  • 举报
回复
while(i-->0)
这条语句是先用i与0比较 然后i再减1

第一次循环i为2 2>0 进入循环体后 i为1
第二次循环i为1 1>0 进入循环体后 i为0
第三次循环i为0 跳出
sanfenzhai 2008-04-20
  • 打赏
  • 举报
回复
++i与i++在输出是不同的。
当然在写的时候完全没有必要这样做,只是为了加深自己的理解。
sanfenzhai 2008-04-20
  • 打赏
  • 举报
回复
public class Trying {
public static void main(String[] args)
{
int i=2;
while(--i>0)
{
System.out.println("doing it from i is"+i);
}
System.out.println("finnis");
}

}

是楼主所要的答案。
>java Trying
doing it from i is1
finnis
shiling07 2008-04-20
  • 打赏
  • 举报
回复
i--是先比较在减1,这里是从2开始比较的,所以循环2次
kugou1314 2008-04-20
  • 打赏
  • 举报
回复
执行之后再减
J_Factory 2008-04-20
  • 打赏
  • 举报
回复
while(i--)是先做循环再做减法
Rainland_Lee 2008-04-20
  • 打赏
  • 举报
回复
i后面大的--代表先比较再减一,刚开始验证条件时i=2,验证后i变为1,所以第一次输出时i是1.就出现了这样的结果
cydp007 2008-04-20
  • 打赏
  • 举报
回复
刚开始循环 .. i==2

结果是i与0的比较.. 自己Debug 一下 会比较清楚.

这种问题注意下就好.
renwangxing 2008-04-20
  • 打赏
  • 举报
回复
我靠,一觉醒来,大家都还在加班啊?大家那么热情,明天加分结贴!!
duzhonghua 2008-04-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 Tiny_Sun 的回复:]
引用 8 楼 tyrone_jlu 的回复:
while(i-->0)
这条语句是先用i与0比较 然后i再减1

第一次循环i为2 2>0 进入循环体后 i为1
第二次循环i为1 1>0 进入循环体后 i为0
第三次循环i为0 跳出
[/Quote]
anqini 2008-04-20
  • 打赏
  • 举报
回复

//第一次序环
public class Trying {
public static void main(String[] args){
int i=2;
while(i-->0){ //第一次这里i本来是2,执行了i--.
System.out.println("doing it from i is"+i);因为在上面执行了i--,所以这里的i=1
}System.out.println("finnis");
}

}

//第二次序环
public class Trying {
public static void main(String[] args){
int i=2;
while(i-->0){ //第二次这里i本来是1,执行了i--.
System.out.println("doing it from i is"+i);因为在上面执行了i--,所以这里的i=0
}System.out.println("finnis");
}
}

62,623

社区成员

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

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