这个程序怎么不能打印出数组,却是一个无限循环?public class MyJava73402 
{
public static void main( String args[])
{
int array[] = {1,2,3,4,5,6,7,8,9};
int size = 0;
MyJava73402 object = new MyJava73402();
object.printArray( array,size);
}

public void printArray(int array2[],int i)

System.out.println( array2[i]);

while ( i < array2.length )
printArray( array2,i++ );
}

}

解决方案 »

  1.   

    printArray( array2,i++ );
    有问题啊,i++每次传的都是0。
      

  2.   

    递归就是用来代替循环的,递归中只需要判断就可以了楼主的程序修改三个地方就可以了
    1.将递归中的while修改成if
    2.将判断中的i < array2.length修改成i < array2.length - 1
    3.printArray(array2, i++)要修改成printArray(array2, ++i)否则要死循环的。public class MyJava73402
    {
        public static void main(String args[])
        {
            int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int size = 0;
            MyJava73402 object = new MyJava73402();
            object.printArray(array, size);
        }
        
        public void printArray(int array2[], int i)
        {
            System.out.println(array2[i]);
            
            if(i < array2.length - 1)
                printArray(array2, ++i);
        }
        
    }
      

  3.   

    我刚试了 把i++ 改成 ++i 就行了  这是为什么啊  不是每次都给i+1了吗 ??谢了啊
      

  4.   

    3F说的比较清楚
    printArray( array2,i++ ); 相当与一直传0给int i
      

  5.   

    public void printArray(int array2[],int i) //传过来一个0

    System.out.println( array2[i]); while ( i < array2.length ) 
    printArray( array2,i++ ); //再次调用,i还是0.i++ 是这条语句执行完再加

    //每次调用该方法i都是0,
      

  6.   


    对啊 它是每次用完后再加啊 但下一次调用不就是上一次加完之后的i吗  也就是i=0时会多执行一次,如果像楼上说的话,那用++i不每次都是调用i=1了吗?? 呵呵 这个问题还是搞不懂 所以就一直问下去了 直到弄懂为止  谢谢各位了啊!!
      

  7.   

    只需要修改两处:
    1、将whileg改为if.
    2、将i++改为++i就可以了。
    public class MyJava73402 
    { public static void main( String args[]) 

    int array[] = {1,2,3,4,5,6,7,8,9}; 
    int size = 0; 
    MyJava73402 object = new MyJava73402(); 
    object.printArray( array,size); 
    } public void printArray(int array2[],int i) 

    System.out.println( array2[i]); 
    if ( i < array2.length ) 
    printArray( array2,++i ); 


      

  8.   

    相当于每次执行System.out.println( array2[i]); 
      

  9.   

    请问一下楼上的 我把i++改成i=i+1也行,这两句作为单独语句不是一样的意思吗
      

  10.   

    其实你这句printArray( array2,i++ );
    可以这么看
    int j = i++;
    printArray( array2,j);
    对比一下
    int j = ++i;
    printArray( array2,j);
    这下就清楚了!
    ++i和i++对于i来说是一样的,但对于整个表达式的值却不同!
      

  11.   

    while ( i < array2.length )
    怎么可以这么写呢
    思路本身就有问题
    这里应该写成if(i<array2.length)
      

  12.   

    i++ 当时传的是i ,执行完后才会加1,而++i在执行前会加1 
      

  13.   

    i++先使用i ,再加1,而++i在执行前会加1再使用i的值。printArray( array2,i++ ); 当i初值为0时,每次递归后传入i值都为0,因此一直满足递归中循环的条件,出现死循环。printArray( array2,++i ); 每次递归后传入i值都加1,当不满足while中的判断语句时,此次递归结束,不会出现死循环。