新手求一个小题目的解题思路.谢谢

crper
领域专家: 前端开发技术领域
2012-06-30 09:46:49
class Example{
 public static void main(String args[]){
   int i=1,j=10;
  do{
if(i++>--j)
  continue;
    }while(i<5);
   System.out.print(“i=”+i+”j=”+j);
}
}
程序运行结果:
【答案】
i=5j=6



求思路,,非常感谢,,,

我推来推去还是推导不出结果,,求大伙帮忙
...全文
159 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyuyou123 2012-07-01
  • 打赏
  • 举报
回复
i++是先进行自加,然后再去比较;而--j是先进行比较,然后再自加
crper 2012-07-01
  • 打赏
  • 举报
回复
有些朋友的分析让我终于把思路想通了,,,,非常感谢大家的帮忙
cjh_tostring 2012-07-01
  • 打赏
  • 举报
回复
i++是先用再加,输出为5的话比较时候就是4,--j是减了再比较,为什么输出是5和6那时do-while循环里面的条件是i<5的。
student-ai 2012-06-30
  • 打赏
  • 举报
回复

补充:推错了。。。
[Quote=引用 3 楼 的回复:]

i++是先计算后输出这个知道把?
--j是先输出后计算。

当i=5,j等于6的时候,把这两个值代到表达式里面去就成了这样:

Java code

class Example{
 public static void main(String args[]){
   int i=1,j=10;
  do{
if(5++>--6)//i=5的时候,前面的就成了6,而后面的--6的意……
[/Quote]
student-ai 2012-06-30
  • 打赏
  • 举报
回复
i++是先计算后输出这个知道把?
--j是先输出后计算。

当i=5,j等于6的时候,把这两个值代到表达式里面去就成了这样:


class Example{
 public static void main(String args[]){
   int i=1,j=10;
  do{
if(5++>--6)//i=5的时候,前面的就成了6,而后面的--6的意思是:先输出,也就是输出6之后再计算
  continue; //符合条件,跳出本次循环
    }while(i<5);//执行判断的时候,i的值为5,5不小于5,所以退出循环.
   System.out.print(“i=”+i+”j=”+j);
}
}




我也是新手,不知道分析的对不,参考下把。
还有另外一种比较麻烦的方式可以推,就是把i和j的值,一个一个带进去.
我为JAVA狂 2012-06-30
  • 打赏
  • 举报
回复
过程是这样的:
i = 1 , j = 10 - 1 = 9; 1 > 9不成立 (执行i++) i=2;

i = 2 , j = 9 - 1 = 8; 2 > 8不成立 (执行i++) i=3;

i = 3 , j = 8 - 1 = 7; 3 > 7不成立 (执行i++) i=4;

i = 4 , j = 7 - 1 = 6; 4 > 6不成立 (执行i++) i=5;

需要注意的是i++ 是在这条语句结束后执行i = i +1 ++i是先执行i=i+1再运行语句
qiumoon520 2012-06-30
  • 打赏
  • 举报
回复
加上两句话就一目了然了
public class dd
{
public static void main(String args[])
{
int i = 1, j = 10;
do
{
if (i++ > --j)
continue;
else //加上这句
System.out.println("i=" + i + " j=" + j);//加上这句
}
while (i < 5);
// System.out.println("i=" + i + " j=" + j);
}
}

运行结果是这样的:
i=2 j=9
i=3 j=8
i=4 j=7
i=5 j=6

从程序开始,首先执行一次do{}里面的语句,即i加了1,j减少1,当i比j大的时候都continue即结束本次循环,又由于while (i < 5)的作用,当i变到4的时候是最后一次循环(变到5就不能了,此时i已经是5了,同理j已经是6了),故结果是那样。i=2,i=3,i=4,加上之前的一个do,i一共加了4,同理j也一共减了4,故j是6。
八成是学习C语言的时候老师故意刁娜的

62,621

社区成员

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

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