反转数组的问题

时间:2014-03-02 19:54:54

标签: java arrays reverse

public static void reversedArray(double testArray[])
{
    double lastNumber = 0;
    for (int counter1 = 0, counter2 = testArray.length - 1; counter1 < testArray.length; counter1++, counter2 \--)
    {
       lastNumber = testArray[counter2];
       testArray[counter1] = testArray[counter2];
       testArray[counter2] = lastNumber;
    }
}

这是反转数组的方法。该数组的长度为5.它正确显示前3个数字,但最后2个数字是错误的。例如,我输入1,2,3,4,5并返回5,4,3,4,5

编辑:看起来我得到了它,我取出了testArray.length作为for循环中的比较,并将其替换为counter2。

3 个答案:

答案 0 :(得分:1)

您正在覆盖数组中的数据。您需要一些临时位置来存储它。现在你应该能够自己修复你的方法了。

下次考虑使用Collections.reverse(Arrays.asList(yourArray))而不是自己编写。

答案 1 :(得分:0)

应该是

  lastNumber = testArray[counter2];
  testArray[counter2] = testArray[counter1];
  testArray[counter1] = lastNumber;

答案 2 :(得分:-1)

public static void reversedArray(double testArray[])
{
    double lastNumber = 0;
    for (int counter1 = 0, counter2 = testArray.length - 1; counter1 < testArray.length; counter1++, counter2 \--)
    {
       lastNumber = testArray[counter2];
       testArray[counter1] = testArray[counter2];
       testArray[counter2] = lastNumber; //this line does nothing. testArray[counter2] is already lastnumber. 
    }
}

最后一行没有做任何事情。最后一个号已经分配给testArray [counter2]。然后它又回到了自己的位置。