【发布时间】:2015-10-24 12:03:00
【问题描述】:
我正在尝试将数组拆分为 odd 和 even 数字。请注意,最终结果中的数字排序无关紧要。我正在编译代码,输出包含一些错误。我的代码正确排列了 odd 数字,而 even 数字给我带来了一些麻烦。有人可以帮我安排even 号码吗?
基本上,我将odd数字排列在数组的左侧,并在开头有oddPos = 0; even 数字在右侧,定位从数组的最末端开始evenPos = myArray.length - 1。
public class EvenOddArray {
public static void main(String[] args){
int[] myArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int oddPos = 0;
int evenPos = myArray.length - 1;
for(int i = 0; i < myArray.length; i++){
if(myArray[i] % 2 == 0){
myArray[evenPos] = myArray[i];
evenPos--;
}
else{
myArray[oddPos] = myArray[i];
oddPos++;
}
}
for(int i = 0; i < myArray.length; i++){
System.out.print(myArray[i] + " ");
}
}
}
输出:
1 3 5 7 2 4 6 6 4 2
【问题讨论】:
-
您正在覆盖尚未处理的输入。要么使用一个新的数组作为输出,要么用一个未处理的位置交换目标位置。
-
@CodesInChaos,您能否解释一下覆盖尚未处理的输入?我不明白那部分
-
除非您真的需要避免额外分配数组的开销,否则我建议使用单独的数组进行输入和输出。它更易于实现且更易于使用。