start为什么虽然没有错误,但显示了消息,但代码没有执行?
public int[] sortArrayByParityII(Integer[] nums) {
int[] resArr = new int[nums.length];
ArrayList<Integer> arrHAves = new ArrayList<>(Arrays.asList(nums));
boolean isHaveBol = false;
int a = 0;
int k = 0;
int w = 0;
System.out.println("Start");
for (int i = 0; i<nums.length; i++) {
if (nums[i] % 2 == 0) {
resArr[a] = nums[i];
arrHAves.remove(nums[i]);
a++;
int index = 0;
for (int ind = 0; ind < nums.length; ind++) {
if (nums[i] == ind) {
index = ind;
}
}
if (index == nums.length - 1) {
} else {
for (int l = 0; l < arrHAves.size(); l++) {
if (l % 2 != 0) {
isHaveBol = true;
break;
}
}
if (isHaveBol) {
for (int b = 0; k < nums.length ; b++) {
if (nums[k] % 2 != 0) {
resArr[a] = nums[b];
arrHAves.remove(nums[b]);
a++;
k++;
break;
}
}
}
}
}
}
return resArr;
}
你可以做的更简单(网上查):
对于每个偶数位,如果有奇数,我们寻找第一个未使用的偶数并交换它们。
代码运行,但
for (int b = 0; k < nums.length; b++)在最后一个嵌套循环中出现挂起,因为变量k在循环内可能永远不会更改,因为它要求条件为 trueif (nums[k] % 2 != 0)。如果任务仅包括根据奇偶性将数字排列到索引中,那么一次性将数字排列在结果数组中所需的索引处就足够了:
这里假设输入数组
nums是正确的,即它的长度为偶数,并且包含相同数量的偶数和奇数。