欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

随机数获取数组,然后升序排列,获取数组中最小的五个奇数

程序员文章站 2022-05-12 10:37:49
...
import java.util.Arrays;
import java.util.Random;

/**
 * 1:按要求完成如下功能
 * A 定义方法public static int[] getNums(int[] arr),实现一下功能,获取arr中最小的5个奇数,
 * 并按照升序排列后,以数组的方式返回.
 * B 定义main方法,要求:
 * 1.定义一个长度为50的int数组arr,数组元素为2-199之间的随机数字,包括2和199.
 * 2.调用getNums()方法,将数组arr传入,接收返回数组,并将结果打印到控制台.
 */
public class Assign04 {
    public static void main(String[] args) {
        int[] arr = new int[50];
        int[] randomArr = randomArr(arr);
//        System.out.println(Arrays.toString(randomArr));
        System.out.println(Arrays.toString(getNums(arr)));
    }

    /**
     * 获得数组中最小的五个奇数
     * @param arr
     * @return
     */
    public static int[] getNums(int[] arr) {

        Arrays.sort(arr);
        int count_odd = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % 2 != 0) {
                count_odd++;//获取奇数数组的长度
            }
        }
        int[] Odd = new int[count_odd];
        System.out.println(Arrays.toString(arr));
        int index=0;//定义索引,不随奇数数组的索引变化而变化
        for (int j = 0; j < arr.length; j++) {
            if (arr[j]%2!=0) {
               Odd[index]=arr[j];
               index++;//当元数组元素为奇数是将他赋给奇数数组
                //然后奇数数组索引加1
            }
        }
//        for (int i = 0,j=0; i < arr.length; i++) {//将index变成j定义在循环里面也是一样的
//            if (arr[i] % 2 != 0) {
//                    Odd[j] = arr[i];
//                    j++;
//            }
//        }
//        System.out.println(Arrays.toString(Odd));
        int[] ultimate=new int[5];
        for (int i = 0; i < 5; i++) {
            ultimate[i]=Odd[i];
        }
        return ultimate;
    }

    /**
     * 获取随机数数组
     * @param arr
     * @return
     */
    public static int[] randomArr(int[] arr) {
        Random rd = new Random();

        for (int i = 0; i < arr.length; i++) {
            arr[i] = rd.nextInt(198) + 2;
        }
        return arr;
    }
}

这道题当时我做的时候,问题出现在没有将新数组和老数组的索引分开,所以获得的奇数元素无法正确的赋给新数组.后来通过同学指导,和自己摸索,定义了一个index.只有当赋值成功的时候,索引再加一,这样就不会冲突了.