int[] num={1,2,3,4,5,6,7};
 for(int i=0;i<num.length;i++){
 num[i]=num[num.length-1-i];
 System.out.println(num[i]);
 }
为什么这样不能实现数组的倒序输出?  错在哪啊

解决方案 »

  1.   

    int[] num={1,2,3,4,5,6,7};
    for(int i=0;i <num.length;i++){
    num[i]=num[num.length-1-i];
    System.out.println(num[i]);
    } 开始的时候, i = 0, num[0] = num[6], 但当i = 6时, num[6] = num[0], 这个变成num[0]与最后num[6]都为最开始的num[6]了.可以考虑如下:
    int[] num={1,2,3,4,5,6,7};
    for(int i=0;i <num.length / 2;i++){
    //逆序只要交换第一个数与最后一个数, 第二个数与倒数第二个数, 直到数组的中间即可. 
    int temp = num[i];
    num[i]=num[num.length-1-i];
    num[num.length-1-i] = num[i];
    } for (int i = 0; i < num.length; ++i) {
    System.out.println(num[i] + "\t");
    }
      

  2.   


    public class r{
    public static void main(String args[]){
    {
    int temp;
    int[] num={1,2,3,4,5,6,7}; 
    for(int i=0;i <num.length;i++){
    if(i<3){temp=num[i];
    num[i]=num[num.length-1-i]; 
    num[num.length-1-i]=temp;
    }
    System.out.println(num[i]); 

    }
    }
    }后面一般没有修改
    要倒序怎么不用for(int i=num.length;i>=0;i--)呢????
      

  3.   

    他们公用的是一块内存.当i=0是你的num[0]已经等于7了.
      

  4.   

    当i<= (num.length -1)/2 , 该程序是正确的, 但是当i >(num.length -1)/2由于前半数组的值已经被后面一半数组的值覆盖了.所以你打印的仍是后半数组的值.
      

  5.   

    int[] num={1,2,3,4,5,6,7}; 
    for(int i=num.length-1;i >=0;i--){ 
     System.out.println(num[i]); 

    这样不能倒序是吗?
      

  6.   

    首先,这样是可以实现,不过你少写了一个中间变量.
    应该知道交换a,b值的函数怎么写吧
    void swap(int a, int b) {
      int temp;
      temp = a;
      a = b;
      b = temp;
    }
    你的程序中少了temp这个中间变量,所以就把一部分值给覆盖了.其实你做倒序的话,建议用容器(Collection),它自己带有逆序的方法.
    Collection<Integer> c = new ArrayList();
    c.add(1);
    c.add(2);
    c.reverse();
      

  7.   

    num[i]=num[num.length-1-i];这句的问题,你这样实际上操作的是同一个数组对象,当i=0时num[0]=num[6]那么num[0]=7了,1就没有了,num数组就改变了;
    如果你换成
    int temp=num[num.length-1-i]; 
    System.out.println(temp);
    这样的话,num数组的就不会改变,还是 {1,2,3,4,5,6,7};