Java案例:计算飞机票价格、找素数、验证码、数组的复制、评委打分、数字加密、双色球案例

一、计算飞机票价格 

//机票价格按照淡季旺季,头等舱和经济舱收费,输入机票原价、月份、头等舱或经济舱
//按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月),头等舱7折,经济舱6.5折

import java.util.Scanner;

public class lianxi {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入机票原价:");
        double money = sc.nextDouble();

        System.out.println("请输入月份(1-12):");
        int month = sc.nextInt();

        System.out.println("请输入机票舱位(头等舱或经济舱):");
        String type = sc.next();

        if (month >= 5 && month <= 10) {
            calc(0.9, 0.85, money, type);
        } else if (month == 11 || month == 12 || month >= 1 && month <= 4) {
            calc(0.7, 0.65, money, type);
        } else {
            System.out.println("输入的月份有误!");
        }
    }

    //定义一个方法计算票价
    public static void calc(double a, double b, double money, String types) {
        switch (types) {
            case "头等舱":
                money *= a;
                break;
            case "经济舱":
                money *= b;
                break;
            default:
                System.out.println("输入的舱位有误!");
                break;
        }
        System.out.println("您当前购买的机票价格为:" + money + "元");
    }
}

二、找素数 

//找出101-200之间的素数

public class lianxi {
    public static void main(String[] args) {
        for (int i = 101; i <= 200; i++) {
            //prime(i);//方法调用判断是否是素数
            if (prime(i)) {
                System.out.print(i + " ");
            }
        }
    }

    //素数判断:除了1和本身之外不能被其他整数整除的数是素数
    public static boolean prime(int num) {
        for (int i = 2; i <= (num / 2); i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }

}

三、随机生成验证码

//随机生成验证码

import java.util.Random;

public class lianxi {
    public static void main(String[] args) {
        System.out.println("随机生成的验证码是:" + checkCode(5));
    }

    public static String checkCode(int n) {
        Random r = new Random();
        String code = "";
        for (int i = 0; i < n; i++) {
            //随机生成3位数0,1,2代表大写字母,小写字母、数字
            int type = r.nextInt(3);
            switch (type) {
                case 0:
                    //大写A 65 - Z 65+25
                    char ch = (char) (r.nextInt(26) + 65);
                    code += ch;
                    break;
                case 1:
                    //小写a 97 - z 97+25
                    char ch1 = (char) (r.nextInt(26) + 97);
                    code += ch1;
                    break;
                case 2:
                    //数字1-9
                    code += r.nextInt(10);
                    break;
            }
        }
        return code;
    }
}

四、数组的复制

//数组的复制

public class lianxi {
    public static void main(String[] args) {
        int[] arr1 = {11, 12, 13, 14, 15};
        int[] arr2 = new int[arr1.length];
        //调用方法复制数组
        copyArray(arr1, arr2);
        //打印输出
        printArray(arr1);
        printArray(arr2);
    }
    //复制
    public static void copyArray(int[] arr1, int[] arr2) {
        for (int i = 0; i < arr1.length; i++) {
            arr2[i] = arr1[i];
        }
    }
    //打印
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
        }
        System.out.println("]");
    }
}

五、评委打分 

//评委打分
//六位评委给选手打分【0-100】,计算6位评委打分的总分减去最大和最小值的平均分

import java.util.Scanner;

public class lianxi {
    public static void main(String[] args) {
        int[] scores = new int[6];
        int max = 0;
        int min = 100;
        int sum = 0;
        Scanner sc = new Scanner(System.in);

        for (int i = 0; i < scores.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个评委的打分:");
            scores[i] = sc.nextInt();
            sum += scores[i];   //总分
            if (max < scores[i]) {
                max = scores[i];
            }
            if (min > scores[i]) {
                min = scores[i];
            }
        }
        double result = (sum - max - min) * 1.0 / (scores.length - 2);
        System.out.println("选手最终得分是:" + result);
    }
}

六、数字加密

//数字加密
//某系统的数字密码,比如1983,采用加密方式进行传输,规则如下:先得到每一位数,然后每位数加上5,再对10取余,最后反转输出

public class lianxi {
    public static void main(String[] args) {
        //定义数组存储密码
        int[] num = {1, 9, 8, 3};
        //进行加密(加5、取余10)
        for (int i = 0; i < num.length; i++) {
            num[i] = (num[i] + 5) % 10;
        }
        //反转交换
        for (int i = 0, j = num.length - 1; i < j; i++, j--) {
            int temp = num[i];
            num[i] = num[j];
            num[j] = temp;
        }
        //遍历数组输出
        for (int i = 0; i < num.length; i++) {
            System.out.print(num[i]);
        }
    }
}

7、双色球案例

import java.util.Random;
import java.util.Scanner;
//双色球案例
//1、随机生成7个中奖号码,6个红球(数字:1-33)要求数字不重复,一个蓝球(1-16)
//2、用户输入一组投注号码
//3、中奖情况判断:红+蓝(0+1、1+1、2+1中5元)、(3+1、4+0、4+1、5+0中200元)、(5+1中500元)、(6+0中500万)、(6+1中1000万)
public class lianxi {
    public static void main(String[] args) {
        int[] luckNumber = luckNumber();    //随机生成中奖号码(6个红球,1个蓝球)

        int[] userNumber = userNumber();    //用户投注号码

        judgeNumber(luckNumber, userNumber);//中奖情况判断
    }

    //数组遍历输出
    public static void printArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }

    //1、随机生成中奖号码
    public static int[] luckNumber() {
        Random r = new Random();
        int[] number = new int[7];
        //先生成6个不重复的红球号码
        for (int i = 0; i < number.length - 1; i++) {
            //用flag作为是否是重复号码的标记
            boolean flag = true;

            while (true) {
                int data = r.nextInt(33) + 1;//随机生成1-33的数字
                for (int j = 0; j < i; j++) {
                    if (data == number[j]) {
                        flag = false;
                        break;
                    }
                }
                //将不重复的随机数放进数组
                if (flag) {
                    number[i] = data;
                    break;
                }
            }
        }
        //随机生成一个(1-16)的蓝球数字
        number[number.length - 1] = r.nextInt(16) - 1;
        return number;
    }

    //2、用户输入投注号码
    public static int[] userNumber() {
        int[] number = new int[7];
        Scanner sc = new Scanner(System.in);

        //先将红球放进用户数组
        for (int i = 0; i < number.length - 1; i++) {
            System.out.println("请输入第" + (i + 1) + "个红球号码(1-33)不重复:");
            number[i] = sc.nextInt();
        }
        //将蓝球号码放进用户数组
        System.out.println("请输入蓝球号码:");
        number[number.length - 1] = sc.nextInt();
        return number;
    }

    //3、中奖情况判断
    public static void judgeNumber(int[] arr1, int[] arr2) {
        int num1 = 0;//用于记录红球中奖个数
        int num2 = 0;//用于记录蓝球是否中奖
        //先判断红球中奖个数
        for (int i = 0; i < arr2.length - 1; i++) {
            for (int j = 0; j < arr1.length; j++) {
                if (arr1[j] == arr2[i]) {
                    num1++;
                    break;
                }
            }
        }
        //判断蓝球是否中奖
        num2 = arr1[arr1.length - 1] == arr2[arr2.length - 1] ? 1 : 0;

        System.out.println("中奖号码:");
        printArray(arr1);

        System.out.println("投注号码:");
        printArray(arr2);

        System.out.println("您中了" + num1 + "个红球");
        System.out.println("您中了" + num2 + "个蓝球");

        //得奖情况
        if (num1 < 3 && num2 == 1) {
            System.out.println("恭喜您,中了5元!");
        } else if ((num1 < 5 && num2 == 1) || ((num1 == 4 || num1 == 5) && num2 == 0)) {
            System.out.println("恭喜您,中了10元!");
        } else if (num1 == 5 && num2 == 1) {
            System.out.println("恭喜您,中了3000元!");
        } else if (num1 == 6 && num2 == 0) {
            System.out.println("恭喜您,中了500万!");
        } else if (num1 == 6 && num2 == 1) {
            System.out.println("恭喜您,中了1000万!");
        } else {
            System.out.println("很遗憾您没中奖,感谢您为福利事业作出的贡献!");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值