Day08-综合练习

import java.util.Random;

public class test3 {
    /*
        定义方法实现随机产生一个5位的验证码
        验证码格式:
        长度为s
        前四位是大写字母或者小写字母
        最后一位是数字
     */
    // 方法:
    // 在一堆没有什么规律的数据中随机抽取
    // 可以先把这些数据放到数组当中
    // 再随机抽取一个索引
    public static void main(String[] args) {
        char[] chs = new char[52];
        String reslut = "";
        int number;
        for (int i = 0; i < chs.length; i++) {
            if(i <= 25) {
                // 添加小写字母
                chs[i] = (char) (97 + i); // a=97
            }else{
                // 添加大写字母
                chs[i] = (char) (65 + i - 26); // A=65
            }
        }
        Random rand = new Random();
        for(int i = 0; i < 4; i++) {
            int randeomIndex = rand.nextInt(chs.length);
            reslut = reslut + chs[randeomIndex];
        }
        number =rand.nextInt(10);
        reslut = reslut + number;
        System.out.println(reslut);
    }
}
import java.util.Scanner;

public class test5 {
    /*
        需求:在唱歌比赛中,有6名评委给选手打分,分数范围是[0-100]之间的整数。
        选手的最后得分为:去掉最高分、最低分后的四个评委的平均分,
        请完成上述过程并计算出选手的得分。
     */
    public static void main(String[] args) {
        int[] arr = new int[6];
        getScore(arr);
        int max = getMaxScore(arr);
        int min = getMinScore(arr);
        double avg = getAvgScore(min,max,arr);
        System.out.println("平均分为" + avg);
    }
    public static void getScore(int[] arr) {
        Scanner sc = new Scanner(System.in);
        int score;
        for (int i = 0; i < arr.length; ) {
            System.out.println("请输入"+ (i+1) + "号评委分数");
            score = sc.nextInt();
            if (score >= 0 && score <= 100) {
                arr[i] = score;
                i++;
            }else{
                System.out.println("成绩输入不合法");
            }
        }
    }
    public static int getMaxScore(int[] arr) {
        int max = 0;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > arr[max]) {
                max = i;
            }
        }
        System.out.println("去掉一个最高分:"+ arr[max]);
        return max;
    }
    public static int getMinScore(int[] arr) {
        int min = 0;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < arr[min]) {
                min = i;
            }
        }
        System.out.println("去掉一个最低分:"+ arr[min]);
        return min;
    }
    public static double getAvgScore(int min, int max, int[] arr) {
        int sum = 0;
        double avg = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        avg = (sum - arr[max] - arr[min]) / 4;
        return avg;
    }
}

import java.util.Random;

public class Test7 {
    /*
        随机打印奖项:2,588,888,1000,10000
        方法一
     */
    public static void main(String[] args) {

        int[] arr = {2, 588, 888, 1000, 10000};
        int[] newArr = new int[arr.length];

        Random rand = new Random();

        for (int i = 0; i < arr.length; ) {
            int r = rand.nextInt(arr.length);
            int price = arr[r];
            boolean flag = contains(newArr, price);
            if (flag) {
                newArr[i] = price;
                i++;
            }
        }
        for (int i = 0; i < newArr.length; i++) {
            System.out.println(newArr[i] + "元奖金被抽出");
        }
    }
    public static boolean contains(int[] arr, int value) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == value) {
                return false;
            }
        }
        return true;
    }
}
import java.util.Random;

public class Test7 {
    /*
        随机打印奖项:2,588,888,1000,10000
        方法二
     */
    public static void main(String[] args) {

        int[] arr = {2, 588, 888, 1000, 10000};
        Random rand = new Random();
        for (int i = 0; i < arr.length; i++) {
            int randNum = rand.nextInt(arr.length);
            int temp = arr[randNum];
            arr[randNum] = arr[i];
            arr[i] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]+"元奖金被抽出");
        }
    }
}
import java.util.Random;
import java.util.Scanner;

public class Test8 {
    /*
        双色球系统
        投注号码由6个红色球号码和1个蓝色球 号码组成。
        红色号码从1-33中选择;蓝色球号码从1-16中选择。
        双色球中奖条件和奖金表
        一等奖(最高1000万):6+1
        二等奖(最高500万):6+0
        三等奖(3000元):5+1
        四等奖(200元):5+0、4+1
        五等奖(10元):4+0、3+1、2+1
        六等奖(5元):1+1、0+1
     */
    public static void main(String[] args) {
        // 1.生成中奖号码
        int[] arr =createNumber();

        // 2.读入用户号码
        int[] userInputArr = userInputNumber();

        // 3.判断用户的中奖情况
        int redCount = 0;
        int blueCount = 0;

        for (int i = 0; i < userInputArr.length - 1; i++) {
            int redNumber = userInputArr[i];
            for (int j = 0; j < arr.length - 1; j++) {
                if (arr[j] == redNumber) {
                    redCount++;
                    break;
                }
            }
        }
        if(blueCount == arr[arr.length - 1]){
            blueCount++;
        }

        //4.根据红篮球情况进行奖金判断
        if(redCount == 6 && blueCount == 1){
            System.out.println("恭喜您中奖1000万");
        }else if(redCount == 6 && blueCount == 0){
            System.out.println("恭喜您中奖500万");
        }else if(redCount == 5 && blueCount == 1){
            System.out.println("恭喜您中奖3000元");
        }else if((redCount == 5 && blueCount == 0) || (redCount == 4 && blueCount == 1)) {
            System.out.println("恭喜您中奖200元");
        } else if ((redCount == 4 && blueCount == 0) || (redCount == 3 && blueCount == 1)) {
            System.out.println("恭喜您中奖10元");
        }else if((redCount == 2 && blueCount == 1) || (redCount == 1 && blueCount ==1) || (redCount == 0 && blueCount == 1)) {
            System.out.println("恭喜您中奖5元");
        }else{
            System.out.println("谢谢参与");
        }
    }

    public static int[] createNumber(){
        int[] arr = new int[7];
        Random random = new Random();
        for (int i = 0; i < 6; ) {
            int r = random.nextInt(31) + 1;
            if(contains(arr,r)){
                arr[i] = r;
                i++;
            }
        }
        arr[arr.length-1] = random.nextInt(16) + 1;
        return arr;
    }

    public static boolean contains(int[] arr, int number){
        for (int i = 0; i < 6; i++) {
            if(arr[i] == number){
                return false;
            }
        }
        return true;
    }

    public static int[] userInputNumber(){
        int[] arr = new int[7];
        Scanner sc = new Scanner(System.in);

        for (int i = 0; i < 6; ) {
            System.out.println("请输入第" + (i + 1) + "个红球号码:");
            int num = sc.nextInt();
            if(num >= 1 &&num <= 33){
                if(contains(arr,num)){
                    arr[i] = num;
                    i++;
                }else{
                    System.out.println("红球号码输入重复,请重新输入。");
                }
            }else{
                System.out.print("输入号码不合法,红球号码为1-33。");
            }
        }

        while(true){
            System.out.println("请输入蓝球号码:");
            int blueNumber = sc.nextInt();
            if(blueNumber >= 1 && blueNumber <= 16){
                arr[arr.length-1] = blueNumber;
                break;
            }else{
                System.out.println("当前蓝球号超出范围。");
            }
        }
        return arr;
    }
}

你可能感兴趣的:(Java基础,java,算法,排序算法)