这个程序怎么不能打印出数组,却是一个无限循环?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++ );
}
}
{
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++ );
}
}
有问题啊,i++每次传的都是0。
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);
}
}
printArray( array2,i++ ); 相当与一直传0给int i
{
System.out.println( array2[i]); while ( i < array2.length )
printArray( array2,i++ ); //再次调用,i还是0.i++ 是这条语句执行完再加
}
//每次调用该方法i都是0,
对啊 它是每次用完后再加啊 但下一次调用不就是上一次加完之后的i吗 也就是i=0时会多执行一次,如果像楼上说的话,那用++i不每次都是调用i=1了吗?? 呵呵 这个问题还是搞不懂 所以就一直问下去了 直到弄懂为止 谢谢各位了啊!!
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 );
}
}
可以这么看
int j = i++;
printArray( array2,j);
对比一下
int j = ++i;
printArray( array2,j);
这下就清楚了!
++i和i++对于i来说是一样的,但对于整个表达式的值却不同!
怎么可以这么写呢
思路本身就有问题
这里应该写成if(i<array2.length)