我试图想出一个解决方案,只对数组中的奇数进行排序,同时保持偶数不变。为了实现这一点,我尝试将给定数组中的所有奇数删除到一个新数组(odd_arr)中并填充空白,我插入了一个大数字(9731),以便我知道应该在哪里插入奇数一旦这些奇数被排序。
(只是为了理解例:如果数组是 {5,3,2,8,1,4} 那么 step1:odd_arr 将是 {5,3,1} 并且数组是 {9731,9731,2,8, 9731,4} step2 : 排序后的odd_arr 将是{1,3,5} step3 : 最后用排序后的奇数代替主数组中的数字'9731',输出应该是数组{1,3,2,8, 5,4})。
这是我的代码,它给出了 ArrayIndexOutOfBoundException :
class Test {
public static int[] sortArray(int[] array) {
int[] odd_arr = new int[50];
int k =0;
for(int i :array){
if(array[i] % 2 == 1)//Exception producing at this line{
odd_arr[k] = array[i];
array[i] = 9731;
k = k+1;
}
}
Arrays.sort(odd_arr);
int j=0;
for(int i:array){
if(array[i] == 9731){
array[i] = odd_arr[j];
j = j+1;
}
}
return array;
}
public static void main(String[] args) {
int[] array = {5, 3, 2, 8, 1, 4};
int[] sorted_array = sortArray(array); //Exception here too
for(int i=0; i<sorted_array.length;i++)
System.out.print(sorted_array[i] + " ");
}
}
慕沐林林
相关分类