我正在尝试将偶数位置的值与奇数位置的值交换。我必须使用Call语句来获取输出,然后返回,然后使用toString()来显示结果。例如:输入= 5,1,4,0输出= 1,5,0,4
这是我使用的代码,但未正确完成交换部分。任何帮助,将不胜感激
public static void main(String[] args) {
int array2[] = new int[]{11, 43);
int[] swapp = getSwap(array2);
System.out.println("Swapped array is "+Arrays.toString(swapp));
}
public static int[] getSwap(int[] inputArray2){
for (int i= 0, j=1; i<inputArray2.length; i+=2){
while (j<inputArray2.length && inputArray2[j] % 2 ==1) {j+=2;}
if(inputArray2[i]% 2 ==1){
int t= inputArray2[i];
inputArray2[i]= inputArray2[j];
inputArray2[j]=t;
j+=2;
}
}
return inputArray2;
}}
您可以通过一个简单的循环来完成此任务,如下所示:
public static void main(String[] args) {
int array2[] = new int[] { 5, 1, 4, 0 };
int[] swap = getSwap(array2);
System.out.println("Swapped array is " + Arrays.toString(swap));
}
public static int[] getSwap(int[] input) {
for (int i = 0; i < input.length - 1; i += 2) {
int temp = input[i];
input[i] = input[i + 1];
input[i + 1] = temp;
}
return input;
}
,输出
Swapped array is [1, 5, 0, 4]
提供此类示例时,看到(错误的)输出将很有帮助。但是,我相信我可以看到问题所在。
首先,您似乎对数组在Java中的工作方式有点困惑。除非明确创建新数组,否则不会复制数组。在main
函数中,有两个int[]
变量,即array2
和swapp
。但是,这些都是对同一数组的引用!如果打印出每一个(在调用getSwap
之后),您将看到它们具有相同的内容。
如果您想要的是传入的数组的[[copy,其中的偶数/奇数元素已交换,那么您需要创建一个新的数组。可以这样做:
int[] outputArray = new int[inputArray2.length];
第二,看起来您在将偶数/奇数可以工作。通常,在编程时,最好的方法是先解决问题,然后编写代码。在这种情况下,您需要先决定如何交换阵列的偶数/奇数位置。我认为您还没有这样做。但是,您非常接近! if语句中的代码在正确的轨道上。我鼓励您坐下来尝试自己解决问题,以及到目前为止列出的想法。但是,如果遇到困难,请随意查看我认为的内容位置与偶数/奇数元素混淆。实际上,我认为您同时做这两项?如果要交换偶数/奇数位置,则绝对不希望使用
第三,老实说,您似乎正在抛出代码,希望if(inputArray2[i]% 2 ==1)
行。该行将检查element是偶数还是奇数。something
这里是一个快速的解决方案外观图:
public static int[] getSwap(int[] input) {
int[] output = new int[input.length];
for (int i = 0; i + 1 < input.length; i += 2) {
int j = i + 1;
output[i] = input[j];
output[j] = input[i];
}
return output;
}