交换后如何返回数组?

时间:2014-08-28 20:00:53

标签: java arrays sorting return parameter-passing

所以我有我的main方法应该有1-20打印的数组,然后我应该在每个偶数出现的循环中传递该数组。 swap方法将使用下一个数字切换数组中的偶数...因此在数组[1,2,3,4,5,..]中,2和3将切换,4和5会转换。

这是主要方法:

public class Lab_01_Tester {

public static void main (String[] args) throws FileNotFoundException
{
    PrintWriter writer = new PrintWriter("Lab_01_nums.txt");
    int[] randArray  = Lab_01_ArrayUtilities.buildIntArray(20, 10, 29);

    String randArrayString = Arrays.toString(randArray);

    writer.write(randArrayString);
    System.out.print(randArrayString);

    writer.close();

    for (int i = 0; i < randArray.length - 1; i++)
    {
        if (randArray[i] % 2 == 0)
        {
            Lab_01_ArrayUtilities.swap (randArray, i, i + 1);
            i = i +1;
        }

        else;

    }
    System.out.println();
    System.out.print(randArrayString);

}

}

以下是swap传递给randArray的方法:

public static int[] swap (int[] randArray, int i, int j)
{
    int temp = randArray[i];
    randArray[i] = randArray[j];
    randArray[j] = temp;

    return randArray;
}

我的问题是,当数组被传回时,它没有改变

1 个答案:

答案 0 :(得分:3)

您不需要返回任何内容(假设您更改方法签名以返回void) - 数组的元素已就地交换。

例如:

int[] array = { 3, 5, 4 };
swap(array, 0, 2);
System.out.println(array[0]); // 4
System.out.println(array[2]); // 3

这是你的实际问题:

System.out.print(randArrayString);

自上次打印以来,您还没有改变randArrayString - 所以难怪它打印的价值相同。您只需要在打印之前再次添加此行:

randArrayString = Arrays.toString(randArray);