栽了。。。栽到在泥土中,成了粗心花的乖乖肥料。大写的哭┭┮﹏┭┮
给自己的忠告:做题要审题,做项目要核需求
题目是这样子的:
定义一个数组,其中包含多个数字。用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右边。(可以创建其他数组,不必须在原数组中改变)
其实看到这个题目我没能捋出思路来,只是知道会用到数组,在实现的过程中会创建新数组,最后输出新数组。
我有想过先判断元素奇偶,再根据结果放进不同的数组中,最后把他们放进一个数组,但是这样很麻烦也没有实现出来。
再后来我想判断出元素是偶数就和它后面的数据换个位置,唔有缺陷无法实现。
还有能不能直接在数组中添加元素,因为可以定义一个新数组,左边放奇数右边放偶数,但是奇偶数的下标难到我了,一直没想到一个好的解决办法,所以还是去网上找了一下,参考链接 https://blog.csdn.net/m0_49834705/article/details/109557522
我看了一遍,理解了意思,自己写的时候又出错了,因为我是这样写的
int right = arr8.length-left;
我只理解到粗浅的意思,具体的细节我没深究,所以又报错。
根据链接中的方法,是将偶数判断出来从数组的最后一位一直往前放,奇数是从前往后放,果然,我又理解了一遍,可以实现了,真是普大欢喜,谢天谢地!
最终代码:
int[] arr8 = new int[]{27,44,59,8,62,25,31,12,71,48};//自定义数组,10个元素
int[] arr8New = new int[arr8.length];
int left = 0;//用left整形数据来决定奇数应该存放的位置下标,一开始存放在第一位,下标为0
int right = arr8.length-1;//第一位偶数放在数组最后一位
for(int i=0;i<arr8.length;i++){
if(arr8[i]%2==0){//偶数
arr8New[right] = arr8[i];
right--;//因为偶数放右边,且第一位偶数放在数组最后一位,此时在出现偶数,其对应下标值减小,数据往前放
}else{
arr8New[left] = arr8[i];
left++;//出现更多奇数,下标值增加
}
}
System.out.println("最终实现的数组是:");
for(int i=0;i<arr8.length;i++){
System.out.print(arr8New[i]+" ");
}