0
点赞
收藏
分享

微信扫一扫

java 生成随机数组,进行排序,求平均数,求数组内的奇数,质数

雪域迷影 2022-04-03 阅读 66
java

是自己做的一份作业,很简单,主要涉及数组的复制,方法的使用等等,还有奇数的判断方法,质数的判断方法,程序不是最简约的,但是是当下的我的思路,就当记录以下吧。

package com.methods;//删掉了一点

import java.util.Arrays;
import java.util.Scanner;

public class HomeWork {
    public static void main(String[] args) {

        //输入数组长度
        System.out.print("请输入长度:");
        Scanner scanner = new Scanner(System.in);
        int length = scanner.nextInt();
        //输入随机数范围
        System.out.print("请输入随机数范围:");
        Scanner scanner1 = new Scanner(System.in);
        int scope = scanner1.nextInt();

        //获取长度为length的随机数组
        int[] arr = randomNumber(length,scope);
        System.out.println("随机生成的数组:" + Arrays.toString(arr));

        //数组排序
        System.out.println("排序后的数组:" + Arrays.toString(sort(arr)));

        //求平均数
        System.out.println("平均数:" + ave(arr,length));

        //奇数
        System.out.println("奇数:" + Arrays.toString(odd(arr,scope)));

        //质数
        System.out.println("质数:" + Arrays.toString(prime(arr,scope)));

    }
    //获取长度,产生随机数组,并返回main函数
    public static int[]  randomNumber(int arrarLength, int scope){
        int[] arr=new int[arrarLength];
        for(int i=0;i<arr.length;i++){
            arr[i]=(int)(Math.random()*scope);
        }
        return arr;
    }

    //给生成的数组排序
    public static int[] sort(int[] arr1){
        for(int j = 0; j < arr1.length - 1; j++) {
            for (int i = 0; i < arr1.length - j - 1; i++) {
                if (arr1[i] >= arr1[i + 1]) {
                    //交换值
                    int temp = arr1[i];
                    arr1[i] = arr1[i + 1];
                    arr1[i + 1] = temp;
                }
            }
        }
        return arr1;
    }

    //求平均数
    public static double ave(int[] arr,int length){
        double ave = 0.0;
        double sum = 0;
        for(int i = 0; i < arr.length; i++){
            sum = sum + arr[i];
        }
        ave = sum / length;
        return ave;
    }

//注意注意,数组是传递的地址值,不是直接传值
    //质数
    public static  int[] prime(int[] arr1,int scope){
        //传下来的地址先复制一个
        int[] arr;
        arr = Arrays.copyOf(arr1,scope);//Arrays.copyOf会复制成一个新的数组,不会占据原来数组的内存空间,这里不能用 arr = arr1;  不然还是在原来的数组空间进行操作。下面的奇数也是一样的。
        int z = 0;
        for(int j = 0; j < arr.length - 1; j++){
            int i = 2;
            for(; i < arr[j] ; i++) {
                if (arr[j] % i== 0 ) {//质数的判定方法
                       break;
                }
            }
            if (i >= arr[j] && arr[j] != 0 && arr[j] != 1) {//1,0都不是质数
                arr[z] = arr[j];
                z++;
            }
            }
        arr = Arrays.copyOf(arr,z);
        return arr;
    }

    //奇数
    public static  int[] odd(int[] arr1,int scope) {
        int[] arr;
        arr = Arrays.copyOf(arr1,scope);
        int temp = 0;
        for(int i = 0; i < arr.length - 1; i++){
                if(arr[i] % 2 != 0 && arr[i] != 0){//奇数的判断方法
                    arr[temp] = arr[i];
                    temp++;
            }
        }
        arr = Arrays.copyOf(arr,temp);
        return arr;
    }
}

运行结果截图:

 

举报

相关推荐

0 条评论