你说你胸有成竹,我看你在放屁!

       栽了。。。栽到在泥土中,成了粗心花的乖乖肥料。大写的哭┭┮﹏┭┮

       给自己的忠告:做题要审题,做项目要核需求

       题目是这样子的:

定义一个数组,其中包含多个数字。用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右边。(可以创建其他数组,不必须在原数组中改变)

        其实看到这个题目我没能捋出思路来,只是知道会用到数组,在实现的过程中会创建新数组,最后输出新数组。

        我有想过先判断元素奇偶,再根据结果放进不同的数组中,最后把他们放进一个数组,但是这样很麻烦也没有实现出来。

        再后来我想判断出元素是偶数就和它后面的数据换个位置,唔有缺陷无法实现。

        还有能不能直接在数组中添加元素,因为可以定义一个新数组,左边放奇数右边放偶数,但是奇偶数的下标难到我了,一直没想到一个好的解决办法,所以还是去网上找了一下,参考链接 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]+" ");
}

猜你喜欢

转载自blog.csdn.net/weixin_60808029/article/details/120745088
今日推荐