修改参数数组,使其仍包含与给定数组完全相同的数字,但重新排列,以便所有偶数都在所有奇数之前。除此之外,数字可以是任何顺序。您必须通过更改方法evensLeft中的数组来修改数组参数。该数组可以为空或只有一个元素。在这两种情况下,都不应该做出任何改变。
public void evensLeft(int[] array){
int j = array.length-1;
int h = 0;
int[] newArray=array;
for (int k = 0; k < newArray.length; k++) {
if(newArray[k]%2==0){
array[h]=newArray[k];
h++;
}else{
array[j]=newArray[k];
j--;
}
}
}
我的测试没有通过,我似乎无法弄清楚出了什么问题。
答案 0 :(得分:1)
问题在于行int[] newArray=array;
您应该将array
复制到newArray
,但int[] newArray=array;
只是让newArray
引用array
引用的整数数组。
将代码更改为int[] newArray=array.clone();
以复制整数数组,然后它应该可以正常工作。
答案 1 :(得分:0)
复制链接到数组,没有任何意义,因为您仍将修改原始数组
int[] newArray=array;
使用
java.util.Arrays.copyOf(array, array.length)
答案 2 :(得分:0)
我尝试使用Comparator。
Set<Integer> ts=new TreeSet<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if(o1%2==0){
if(o2%2==0){
return -1;
}
return -1;
}else if(o2%2==0){
return 1;
}
return 1;
}
});
ts.addAll(Arrays.asList(new Integer[]{2,1,5,7,8,3}));
System.out.println(ts);
<强>输出:强>
[8,2,1,5,7,3]