Java开发从入门到精通(六):Java的基础知识项目案例

Java 案例练习

在这里插入图片描述
在这里插入图片描述

案例一:买飞机票

在这里插入图片描述
分析:

  • 方法是需要接收数据?需要接收机票原价、当前月份、舱位类型
  • 方法是否需要返回数据?需要返回计算出的机票优惠价
  • 方法内部:先使用if判断月份是旺季还是淡季,然后使用switch分支判断是头等舱还是经济舱
package com.qianxin.jipiao;

public class MaiJiPiao {
    public static void main(String[] args) {
        double pirec = fare(1150.1,11,"头等舱");
        System.out.println(pirec);
    }
    public static double fare(double plane_pirec,int datanum,String shipping_space) {
        //1. 判断当前是淡季还是旺季
        if (datanum >= 5 && datanum <= 10) {
            //旺季
            //判断舱位类型
            switch (shipping_space) {
                case "头等舱":
                    plane_pirec = plane_pirec * 0.9;
                    break;
                case "经济舱":
                    plane_pirec = plane_pirec * 0.85;
            }
        } else {
            //淡季
            switch (shipping_space) {
                case "头等舱":
                    plane_pirec = plane_pirec * 0.7;
                    break;
                case "经济舱":
                    plane_pirec = plane_pirec * 0.65;
            }
        }
        return plane_pirec;
    }
}

  • 1、遇到需要通过判断数据在哪个区间,来决定执行哪个业务,应该用什么实现?
    • 应该使用if分支结构实现
  • 2、遇到需要通过判断数据匹配哪个值,来决定执行哪个业务,应该用什么实现?
    • 应该使用switch分支结构实现

案例二:开发验证码

  • 方法是否需要接收数据? 需要接收一个整数,控制生成验证码的位数
  • 方法是否需要返回数据? 需要返回生成的验证码
  • 方法内部的业务:使用for循环依次生成每位随机字符,并使用一个String类的变量把每个字符连接起来,最后返回该变量即可

在这里插入图片描述

import java.util.Random;

public class YanZhenMa {
    public static void main(String[] args) {
        String code = CreateCode(5);
        System.out.println(code);
    }

    public static String CreateCode(int num) {
        Random r = new Random();
        //定义一个String类型的变量用于记住产生的每位随机字符
        String code = "";
        //定义一个for循环用于控制产生多少位随机字符
        for (int i = 0; i < num; i++) {
            //i = 1 2 3 4
            //为每个位置生成一个随机字符,可能是数字,大小写字母
            //思路:随机一个数字0 1 2出来 0代表数字,1代表大写字母 2.代表大写字符
            int num1 = r.nextInt(3);
            switch (num1) {
                case 0:
                    //随机生成一个数字
                    code += r.nextInt(10);
                    break;
                case 1:
                    //随机一个大写字符 A 65  Z 65+25 (0-25)+65
                    char ch1 = (char) (r.nextInt(26) + 65);
                    code += ch1;
                    break;
                case 2:
                    //随机一个小写字符a 的起始值97  z 97+25 (0-25)+97   ALT+ENTER 强制类型转化
                    char ch2 = (char) (r.nextInt(26) + 97);
                    code += ch2;
                    break;
            }

        }
        return code;
    }
}

案例三:评委打分

  • 1。方法是否需要接收数据进行处理? 需要接收评委的人数
  • 2。方法是否需要返回数据? 需要返回计算出的选手最终得分
  • 3。方法内部的业务:,定义数组,录入评委的分数存入到数组中去,接着,我们就需要遍历数组中的分数计算出总分,并找出最高分,最低分、最后按照这些数据算出选手最终得分并返回即可
package com.qianxin.jipiao;

import java.util.Scanner;

public class PingWei {
    public static void main(String[] args) {
        System.out.println("选手的平均分为:"+AvgScores(6));
    }

    public static double AvgScores(int num){
        // 1、定义一个动态初始化的数组,负责后期存入评委的打分
        int[] scores = new int[num];
        Scanner sc= new Scanner(System.in);
        // 2、遍历数组的每个位置,依次录入评委的分数
        for (int i = 0; i < num; i++) {
            System.out.println("请输入第"+ (i+1)+"个评委的分数:");
            int score = sc.nextInt();
            scores[i] =score;

        }
        //3、从数组中计算出总分,找出最高分,最低分
        int sum = 0;
        int max = scores[0];
        int min = scores[0];
        //4、遍历数组找出这些数据的.
        for (int i = 0; i < scores.length; i++) {
            //求和
            sum += scores[i];
            //求最大值
            if (scores[i] > max){
                max = scores[i];
            }
            //求最小值
            if (scores[i] < min){
                min = scores[i];
            }
        }
        //平均分:总和减去最大值和最小值除以人数减2
        return (sum - max - min) /(num-2);

    }
}

案例四:数字加密

  • 1 方法是否需要接收数据进行处理?需要接收四位数字密码,进行加密处理。
  • 2 方法是否需要返回数据? 需要返回加密后的结果
  • 3 方法内部的业务:将四位数字密码拆分成一个一个的数字,存入到数组中去,遍历数组中的每个数字按照题目需求进行加密!最后,再把加密后的数字拼接起来返回即可!
public class JiMi {
    public static void main(String[] args) {
        System.out.println(encrypt(1983));
    }
    public static String encrypt(int num){
        //num =1983
        // 1、把这个密码拆分成一个一个的数字,才可以对其进行加密啊.
        int[] number = splot(num);
        //number=[1,9,8,3]
        for (int i = 0; i < number.length; i++) {
            System.out.println(number[i]);
        }



        // 2、遍历这个数组中的每个数字,对其进行加密处理。
        for (int i = 0; i < number.length; i++) {
            number[i] =(number[i] + 5 ) % 10;
        }
        //number= [6,4,3,8]

        // 3、对数组反转,把对数组进行反转的操作交给一个独立的方法来完成
       reverse(number);
        //number= [8,3,4,6]

        // 4、把这些加密的数字拼接起来做为加密后的结果返回即可。
        String number1 ="";
        for (int i = 0; i < number.length; i++) {
            number1 += number[i];
        }
        return number1;
    }

    public static int[] splot(int num) {
        //number = [1,9,8,3]
        int[] number = new int[4];
        number[0] = num / 1000;
        number[1] = (num / 100) % 10;
        number[2] = (num /10) % 10;
        number[3] = num /10;
        return number;

    }
    public static void reverse(int[] number) {
        //反转数组
        //number= [6,4,3,8]
        //         i     j
        for (int i = 0,j = number.length-1; i < j;i++,j--) {
            // 交换i和j位置处的值
            // 1、把后一个位置处的值交给一个临时变量先存起来
            int temp = number[j];
            // 2、把前一个位置处的值赋值给后一个位置处
            number[j] = number[i];
            // 3、把后一个位置处原来的值(由临时变量记住着) 值给前一个位置
            number[i] = temp;

        }
    }
}

案例五:数组拷贝

案例六: 抢红包

案例七:找素数

案例八:模拟双色球[拓展案例]

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HACKNOE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值