所以我有我的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;
}
我的问题是,当数组被传回时,它没有改变
答案 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);