使用 return 方法交换连续索引中的值
swapping values in contiguous indices using return method
我正在尝试将偶数位置的值与奇数位置的值交换。
我必须使用 Call 语句获取输出然后 return 然后使用 toString() 来显示结果。
例如:输入 = 5,1,4,0
输出= 1,5,0,4
您可以通过一个简单的循环来完成此任务,如下所示:
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
之后),您会发现它们具有相同的内容。
如果您想要的是传入数组的 副本,并且交换了 even/odd 元素,那么您需要创建一个新数组。可以这样做:
int[] outputArray = new int[inputArray2.length];
其次,您似乎混淆了 even/odd locations 和 even/odd elements。事实上,我认为你两者都在做?如果您要交换 even/odd 位置,您绝对不需要 if(inputArray2[i]% 2 ==1)
行。该行将检查 元素 是偶数还是奇数。
第三,老实说,您似乎在扔掉代码,希望 某些东西 能起作用。一般来说,在编程时,最好的做法是先解决问题,再编写代码。在这种情况下,您需要先决定如何交换数组的 even/odd 位置。我认为你还没有这样做。但是,你非常接近! if 语句中的代码在正确的轨道上。
我鼓励您坐下来尝试自己解决问题,以及我目前列出的想法。但是,如果您遇到困难,请随时查看我的想法
以下是解决方案的简要介绍:
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;
}
我正在尝试将偶数位置的值与奇数位置的值交换。 我必须使用 Call 语句获取输出然后 return 然后使用 toString() 来显示结果。 例如:输入 = 5,1,4,0 输出= 1,5,0,4
您可以通过一个简单的循环来完成此任务,如下所示:
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
之后),您会发现它们具有相同的内容。
如果您想要的是传入数组的 副本,并且交换了 even/odd 元素,那么您需要创建一个新数组。可以这样做:
int[] outputArray = new int[inputArray2.length];
其次,您似乎混淆了 even/odd locations 和 even/odd elements。事实上,我认为你两者都在做?如果您要交换 even/odd 位置,您绝对不需要 if(inputArray2[i]% 2 ==1)
行。该行将检查 元素 是偶数还是奇数。
第三,老实说,您似乎在扔掉代码,希望 某些东西 能起作用。一般来说,在编程时,最好的做法是先解决问题,再编写代码。在这种情况下,您需要先决定如何交换数组的 even/odd 位置。我认为你还没有这样做。但是,你非常接近! if 语句中的代码在正确的轨道上。
我鼓励您坐下来尝试自己解决问题,以及我目前列出的想法。但是,如果您遇到困难,请随时查看我的想法
以下是解决方案的简要介绍:
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;
}