Java反向数组方法

时间:2014-07-01 19:51:04

标签: java arrays methods reverse

我试图创建一个接收数组然后以相反方式返回该数组的方法。我写的代码反过来返回数组,但是,前两个值现在为0.任何人都知道我做错了什么?

public static int[] reverse(int[] x)
{     
    int []d = new int[x.length];

    for (int i = 0; i < x.length/2; i++)  // for loop, that checks each array slot
    {
        d[i] = x[i];
        x[i] = x[x.length-1-i];  // creates a new array that is in reverse order of the original
        x[x.length-1-i] = d[i];
    }
    return d;      // returns the new reversed array  
}

3 个答案:

答案 0 :(得分:5)

您正在将未初始化数组d中的值分配给x - 这是零的位置(Java中int的默认值) )来自。

IIUC,你正在混合两种逆转策略。

如果您要创建新阵列,则无需运行原始阵列的一半以上,而是超过所有

public static int[] reverse(int[] x) {

    int[] d = new int[x.length];


    for (int i = 0; i < x.length; i++) {
        d[i] = x[x.length - 1 -i];
    }
    return d;
}

或者,如果你想要反转数组到位,你就不需要一个临时数组,只需要一个变量(最多 - 还有一些方法可以切换两个{{ 1}}没有额外的变量,但这是一个不同的问题):

int

答案 1 :(得分:2)

这是一个简短的方法。

public static int[] reverse(int[] x)
   {

       int[] d = new int[x.length];            //create new array


       for (int i=x.length-1; i >= 0; i--)      // revered loop
       {
        d[(x.length-i-1)]=x[i];                 //setting values              

       }
        return d;                            // returns the new reversed array

   }

答案 2 :(得分:0)

它的简单错误;你正在应对x中的反转数据;并返回d。如果您将返回x,您将获得完整的尊敬数据。

    d[i] = x[i];    // you are copying first element to some temp value
    x[i] = x[x.length-1-i];  // copied last element to first; and respective...
    x[x.length-1-i] = d[i]; // copied temp element to first element; and temp elements are nothing but array d

所以最终你在x中创建了受尊敬的数组,而不是在d中。如果你将返回x,你得到了你的答案。而d只是半烤;因此,对于alwaysign half数组,您的默认值为0。 :)