java入门基础教程:2023.3.4第六天,java的案例训练运用[java教程]

前言

记录时间:2023.3.4

已坚持的第六天

java从入门到精通

学习java时间历程记录打卡

早上6:00到 12:00

下午1:00到6:00

完成代码练习

1.买飞机票的价格计算

package cn.vqqc.demo;

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        //目标:完成买飞机票的价格计算
        //1.先让用户输入机票原价,月份,仓位类型
        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();

        //4.调用方法统计结果
        System.out.println("优惠后的价格是:"+ calc(money, month, type));
    }

    /*
        定义方法接收信息,统计优惠后的价格返回
     */

    public static double calc(double money, int month, String type){
        //3.判断用户选择信息情况
        if(month >= 5 && month <= 10){
            //旺季
            switch (type){
                case "头等舱":
                    money *= 0.9; //money = money * 0.9;
                    break;
                case "经济舱":
                    money *= 0.85; //money = money * 0.85;
                    break;
                default:
                    System.out.println("您输入的舱位类型有误");
                    money = -1;
            }
        }else if(month == 11 || month == 12 || month >= 1 && month <= 4){
            //淡季
            switch (type){
                case "头等舱":
                money *= 0.7; //money = money * 0.7;
                    break;
                case "经济舱":
                    money *= 0.65; //money = money * 0.85;
                    break;
                default:
                    System.out.println("您输入的舱位类型有误");
                    money = -1;
            }
        }else {
            System.out.println("对不起,您输入的月份有问题");
            money = -1; //表示当前无法计算价格
        }
        return money;  //最终的价格
    }
}

2.找出101-200之间的素数

package cn.vqqc.demo;
/*
    找出101-200之间的素数
    素数是上面,如果除了1和它本身以外,不能被其他正整数整除,就叫素数
 */

public class Test2 {
    public static void main(String[] args) {
        //1.定义一个循环,找到101-200之间的数据
        for (int i = 101; i <= 200; i++){
            //i = 101 102 103 ..... 199 200

            //信号位:标记
            boolean falg = true; //一开始认为当前数据是素数

            //2.判断当前遍历的这个数据是否素数
            for (int j = 2; j < i / 2; j++) {
                if (i % j == 0){
                  falg = false;
                  break;
                }
            }

            //3.根据判断的结果选择是否输出这个数据,是素数则输出
            if(falg){
                System.out.print(i + "\t");
            }
        }
    }
}

3.随机验证码

package cn.vqqc.demo;

import java.util.Random;

public class Test3 {
    public static void main(String[] args) {
        //4.调用获取验证码的方法得到一个随机的验证码
        String code = createCode(5);
        System.out.println("验证码是:" + code);
    }

    /*
        1.定义一个方法返回一个随机验证码,是否需要返回值类型申明?String 是否需要中明形参;int  n
     */
    public static String createCode(int n){
        //定义一个字符串变量记录生成的随机字符
        String code = "";
        Random r = new Random();
        //2.定义一个for循环、循环n次,依次生成随机字符
        for (int i = 0; i < n; i++) {
            //3.生成一个随机字符:英文大写 英文小写 数字 (0  1  2 )
            int type = r.nextInt(3); //0 1 2
            switch (type){
                case 0:
                    //大写字符 A(65 - Z 65+25)   (0 + 25) + 65
                    char ch = (char) (r.nextInt(26) + 65);
                    code += ch;
                    break;
                case 1:
                    //小写字符 a(97 - z 97+25)   (0 + 25) + 97
                    char ch1 = (char) (r.nextInt(26) + 97);
                    code += ch1;
                    break;
                case 2:
                    //数字字符
                    code += r.nextInt(10); //0 -9
                    break;

            }
        }
        return code;
    }
}

4.复制数组

package cn.vqqc.demo;

public class Test4 {
    public static void main(String[] args) {
        //学会复制数组
        int[] arr1 = {11, 22, 33, 44};
//        int[] arr2 = arr1; //没有完成数组复制
         int[] arr2 = new int[arr1.length];
        copy(arr1, arr2);

        printArray(arr1);
        printArray(arr2);
    }

    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("]");
    }

    public static void copy(int[] arr1, int[] arr2){
        //完成元素的复制
        for (int i = 0; i < arr1.length; i++) {
            arr2[i] = arr1[i];

        }
    }
}

5.评委打分计算

package cn.vqqc.demo;

import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        //1.定义一个动态初始化数组,用于后期录入6个评委分数
        int[] scores = new int[6];
        //2.录入6个评委分数
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < scores.length; i++) {
            System.out.println("请你输入第"  + (i + 1) + "个评委打分:");
            int score = sc.nextInt();
            //3.把这个分数存入到数组的对应位置处
            scores[i] = score;
        }

        //3.遍历数组中的每个数据,找出最大值,最小值,总分
//        int max = scores[0]; min = scores[0]; int sum = 0;
        int max = scores[0];
        int min = scores[0];
        int sum = 0;
        for (int i = 0; i < scores.length; i++) {
            if (scores[i] > max){
                //替换最大值的数据
                max = scores[i];
            }

            if (scores[i] < min){
                //替换最小值的数据
                min = scores[i];
            }

            //统计总分
            sum += scores[i];
        }
        System.out.println("最高分是:" + max );
        System.out.println("最低分是:" + min );
        //4统计平均分即可
        double result = (sum - max -  min) * 1.0 / (scores.length - 2);
        System.out.println("选手最终的得分是:" + result);
    }
}

6.数字加密

package cn.vqqc.demo;

import java.util.Scanner;

public class Test6 {
    public static void main(String[] args) {
        //数据加密
        //1.定义一个数组存入需要加密的数据
        System.out.println("请您需要输入加密的数字个数:");
        Scanner sc = new Scanner(System.in);
        int length = sc.nextInt();
        int[] arr = new int[length];

        //输入要加密的数字
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请您输入加密的第"+(i + 1 )+"个数字:");
            int number = sc.nextInt();
            arr[i] = number;
        }

        //3.打印数组内容看看
        printArray(arr);

        //4.核心逻辑(对数组中的数据的数据进行加密)arr = [1, 9, 8, 3]
        for (int i = 0; i < arr.length; i++){
            arr[i] = (arr[i] + 5) % 10;
        }
        //5.核心逻辑(对数组中加密的数据进行反转,才是最终加密的结果) arr = [6,4,3,8]
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            //直接交换两者的位置的值即可
            int temp = arr[j];
            arr[j] = arr[i];
            arr[i] = temp;
        }
        printArray(arr);

    }

    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("]");
    }
}

7.拓展:双色球系统开发

package cn.vqqc.demo;

import java.util.Random;
import java.util.Scanner;

/*
        双色球模拟
     */
public class Test7 {
    public static void main(String[] args) {
        //1.随机6个红球号码(1-33,不能重复),随机,一个篮球号码(1-16)可以采用数组装起来作为中奖号码
        int[] luckNumber = createLuckNumber();
        printArray(luckNumber);

        //2.调用一个方法让用户输入7个号码、作为用户号
       int[] userNumber = userInputNumbers();
        printArray(userNumber);

        //3.判断中奖情况
        judge(luckNumber, userNumber);

    }

    public static void judge(int[] luckNumber, int[] userNumber ){
        //判断是否中奖了
        //luckNumbers = [12, 23, 8, 16, 15, 32, 9]
        //userNumbers = [23, 13, 18, 6, 8, 33, 10]
        //1.定义两个变量分别存储红球的命中个数,以及篮球命中的个数
        int redHitNumbers = 0;
        int blueHitNumbers = 0;

        //2.判断红球命中了几个开始统计
        for (int i = 0; i < userNumber.length - 1 ; i++) {
            for (int j = 0; j < luckNumber.length; j++) {
                if (userNumber[i] == luckNumber[j]){
                    redHitNumbers ++ ;
                    break;
                }
            }
        }

        //篮球号码是否命中
        blueHitNumbers = luckNumber[6] == userNumber[6] ? 1 : 0;

        System.out.println("中奖号码是:");
        printArray(luckNumber);
        System.out.println("投注号码是:");
        printArray(userNumber);
        System.out.println("您命中了"+ redHitNumbers +"个红球");
        System.out.println("您是否命中篮球:" + (blueHitNumbers == 1 ? "是": "否"));

        //判断中奖情况
        if(blueHitNumbers == 1 && redHitNumbers < 3) {
            System.out.println("恭喜您中了五元小奖!");
        }else if (blueHitNumbers == 1 && redHitNumbers == 3
                || blueHitNumbers == 0 && redHitNumbers == 4){
            System.out.println("恭喜您中了十元小奖!");
        } else if (blueHitNumbers == 1 && redHitNumbers == 4
                || blueHitNumbers == 0 && redHitNumbers == 5){
            System.out.println("恭喜您中了200元!");
        } else if (blueHitNumbers == 1 && redHitNumbers == 5){
            System.out.println("恭喜您中了3000元大奖!");
        } else if (blueHitNumbers == 0 && redHitNumbers == 6){
            System.out.println("恭喜您中了3000元大奖!");
        }else if (blueHitNumbers == 0 && redHitNumbers == 6){
            System.out.println("恭喜您中了500万超级大奖!");
        }else if (blueHitNumbers == 1 && redHitNumbers == 6){
            System.out.println("恭喜您中了1000万巨奖!");
        }else {
            System.out.println("您没有中奖!");
        }

    }



    public static void printArray(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
        System.out.println(); //换行
    }

    public static int[] userInputNumbers(){
        //a.定义一个数组存储7个号码
        int[] numbers = new int[7];
        //b.让用户录入6个红球号码
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < numbers.length; i++) {
            System.out.println("请您输入第" + (i + 1) + "个红球号码(1 - 33 )要求不重复:");
            int data = sc.nextInt();
            //c.把当前的录入的数据存入到数组中去
            numbers[i] = data;
        }

        //d.单独录入一个篮球号码
        System.out.println("请您输入篮球号码(1-16):");
        numbers[6] = sc.nextInt();
        return numbers;
    }

    public static int[] createLuckNumber(){
        //a.定义一个动态初始化的数组,储存7给数字
        Random r = new Random();
        int[] numbers = new int[7];  //[12,]
        //b.遍历数组,为每一个位置生成对应的号码. (注意 遍历6个位置,生成6个不重复的红球号码,范围是1-33)
        for (int i = 0; i <numbers.length -1 ; i++) {
            while (true){
                int data = r.nextInt(33) + 1;  //1-33 ====>(0-32) +1
                //c 注意,必须判断当前随机的这个号码之前是否出现过,出现要重新随机一个,直到不重复,才能存入数组进去
                //定义一个标记位flag变量,默认认为data是没有重复的
                boolean flag = true;
                for (int j = 0; j < i ; j++) {
                    if(numbers[j] == data){
                        //data当前这个数据之前出现过,不能用
                        flag = false;
                        break;
                    }
                }
                if (flag){
                    //data这个数据没有出现过,可以使用了
                    numbers[i] = data;
                    break;
                }
            }
        }
        //为第7个位置生成一个1-16的号码作为蓝球号码
        numbers[numbers.length -1] = r.nextInt(16) + 1;
        return numbers;
    }
}

视频总结

1.案例1:买飞机票

https://www.bilibili.com/video/BV1Cv411372m?p=63

2.案例2:找素数

https://www.bilibili.com/video/BV1Cv411372m?p=64

3.案例3:验证码

https://www.bilibili.com/video/BV1Cv411372m?p=65

4.案例4:数组的复制

https://www.bilibili.com/video/BV1Cv411372m?p=66

4.案例5:评委打分

https://www.bilibili.com/video/BV1Cv411372m?p=67

6.案例6:数字加密

https://www.bilibili.com/video/BV1Cv411372m?p=68

7.案例7:双色球系统开发

https://www.bilibili.com/video/BV1Cv411372m?p=69

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容