class A{
public static void main(String args[]){
for(int i=1,j=i+10;i<5;i++,j=i*2){
System.out.println("i="+i+"j="+j);
}
}
}为什么结果是:i=1j=11
             i=2j=4
             i=3j=6
             i=4j=8

解决方案 »

  1.   

    for(int i=1,j=i+10;i<5;i++,j=i*2)结果有问题吗这问题用得着100分吗
      

  2.   

    class A
    {
    public static void main(String args[])
            {
    for(int i=1;i<5;)
                      {
                           j=i+10;
         System.out.println("i="+i+"j="+j);
                           i++;
                           j=i*2;
                      }
           }
    }
    写成这样你就明白啦吧
      

  3.   

    楼主对 for(exp1;exp2;exp3){exp4;}的执行顺序没弄清楚啊
    先exp1初始化,再执行exp2判断,true的话就执行exp4;再执行exp3,然后再exp2判断...
    exp1只执行一次,然后是exp2->exp4->exp3->exp2循环执行,直到exp2为false推出
      

  4.   

    分解for(int i=1,j=i+10;i<5;i++,j=i*2){
    System.out.println("i="+i+"j="+j);
    }
    变成如下形式:
    int j=0;
    for(int i=1;i<5;i++){
    if(i==1) {
    j=i+10;
    } else {
    j=i*2;
    }

    System.out.println("i="+i+"\t"+"j="+j);
    }
    修改后的程序:
    class A{ public static void main(String args[]){
    int j=0;
    for(int i=1;i<5;i++){
    if(i==1) {
    j=i+10;
    } else {
    j=i*2;
    }

    System.out.println("i="+i+"\t"+"j="+j);
    } }
    }
    结果:
    i=1     j=11
    i=2     j=4
    i=3     j=6
    i=4     j=8
    Press any key to continue...
    结果说明:
    在for(int i=1,j=i+10;i<5;i++,j=i*2)首先定义了两个变量i=1和j=11;所以第一次打印出来结果是i=1 j=11;打印完后,i=2;j=4,然后程序再次循环,递增i的值,并且在打印输出i和j的值后,执行i++和j=i*2,所以结果就是这个样子的,至于楼上的两位,结果是不正确的,如果不相信你们可以运行一下看看,结果应该是i=1     j=11
    i=2     j=12
    i=3     j=13
    i=4     j=14
      

  5.   

    ==============
    楼主对 for(exp1;exp2;exp3){exp4;}的执行顺序没弄清楚啊
    先exp1初始化,再执行exp2判断,true的话就执行exp4;再执行exp3,然后再exp2判断...
    exp1只执行一次,然后是exp2->exp4->exp3->exp2循环执行,直到exp2为false推出
    ==============
    正解!简单明了
      

  6.   

    程序经过修改,可以得到如下的结构,楼主应该很容易得到答案。class A
    {
      public static void main(String args[])
      {
        int i=1,j=i+10;
        //等价于如下两行语句:
        //int i=1;
        //int j=i+10;
        for(;i<5;)
        {
          System.out.println("i="+i+"j="+j);
          i++;
          j=i*2;
        }
      }
    }
      

  7.   

    赞称lingkeylbh(凌可) 的讲解:********************************************************************
    楼主对 for(exp1;exp2;exp3){exp4;}的执行顺序没弄清楚啊
    先exp1初始化,再执行exp2判断,true的话就执行exp4;再执行exp3,然后再exp2判断...
    exp1只执行一次,然后是exp2->exp4->exp3->exp2循环执行,直到exp2为false推出
    ********************************************************************
      

  8.   

    楼主对 for(exp1;exp2;exp3){exp4;}的执行顺序没弄清楚啊
    先exp1初始化,再执行exp2判断,true的话就执行exp4;再执行exp3,然后再exp2判断...
    exp1只执行一次,然后是exp2->exp4->exp3->exp2循环执行,直到exp2为false推出
    好好再看看初始值,的定义吧
      

  9.   

    我知道
    楼主对 for(exp1;exp2;exp3){exp4;}的执行顺序没弄清楚啊
    先exp1初始化,再执行exp2判断,true的话就执行exp4;再执行exp3,然后再exp2判断...
    exp1只执行一次,然后是exp2->exp4->exp3->exp2循环执行,直到exp2为false推出的意思了~~
      

  10.   

    我觉得是
    for(exp1;exp2;exp3){exp4;}的执行顺序没弄清楚啊先exp1初始化,再执行执行exp4;再exp2判断...,true的话执行exp3
    exp1只执行一次,然后是exp4->exp2->exp3->exp4->exp2循环执行,直到exp2为false推出
         这样吧~~
      

  11.   

    我觉得是
    for(exp1;exp2;exp3){exp4;}的执行顺序没弄清楚啊先exp1初始化,再执行执行exp4;再exp2判断...,true的话执行exp3
    exp1只执行一次,然后是exp2->exp3->exp4->exp2循环执行,直到exp2为false推出
         这样吧~~我写错了~
      

  12.   

    哈哈这段程序完全没有问题啊。。同一楼上的。。
    如果非得找出点问题的话。。这个呵呵
    for(int i=1,j=i+10;i<5;i++,j=i*2){j=i*2是在每次循环结束后执行的。。that is..