日期:2014-05-20  浏览次数:20741 次

新手求一个小题目的解题思路.谢谢
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



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

我推来推去还是推导不出结果,,求大伙帮忙


------解决方案--------------------
加上两句话就一目了然了
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语言的时候老师故意刁娜的
------解决方案--------------------
过程是这样的:
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再运行语句
------解决方案--------------------

补充:推错了。。。
探讨

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的意……