Java编程案例(专题)

案例一:买飞机票

各位同学,我们先来学习第一个案例《飞机买票》,先仔细阅读一下案例需求

Java编程案例(专题)_第1张图片我们来分析一下,这个需求该如何实现。前面我跟同学们讲过,将来我们去做一些需求,都是一个一个方法来实现的,所以在这里我们也采用方法来编写。

这个方法如何编写呢?采用下面的方式来思考

1.首先,考虑方法是否需要接收数据处理?
    阅读需求我们会发现,不同月份、不同原价、不同舱位类型优惠方案都不一样;
    所以,可以将原价、月份、舱位类型写成参数
    
2.接着,考虑方法是否有返回值?
    阅读需求我们发现,最终结果是求当前用户的优惠票价
    所以,可以将优惠票价作为方法的返回值。
    
3.最后,再考虑方法内部的业务逻辑
    先使用if判断月份是旺季还是淡季,然后使用switch分支判断是头等舱还是经济舱,计算     票价

代码如下

public class Test1 {
    public static void main(String[] args) {
        // 目标:完成买飞机票的案例。
        double price = calculate(1000, 11, "头等舱");
        System.out.println("优惠价是:" + price);
    }
​
    public static double calculate(double price,int month,String type){ 
        // 1、判断当前月份是淡季还是旺季
        if(month >= 5 && month <= 10) {
            // 旺季
            // 2、判断仓位类型。
            switch (type){
                case "头等舱":
                    price *= 0.9; // price = price * 0.9;
                    break;
                case "经济舱":
                    price *= 0.85;
                    break;
            }
        }else {
            // 淡季
            switch (type){
                case "头等舱":
                    price *= 0.7; // price = price * 0.7;
                    break;
                case "经济舱":
                    price *= 0.65;
                    break;
            }
        }
        return price;
    }
}

案例二:开发验证码

各位同学,接下来,我们学习第二个案例《开发验证码》,同样先阅读一下案例需求

Java编程案例(专题)_第2张图片分析一下,需求是要我们开发一个程序,生成指定位数的验证码。考虑到实际工作中生成验证码的功能很多地方都会用到,为了提高代码的复用性,我们还是把生成验证码的功能写成方法比较好。

那生成验证码的方法该怎么写呢?按照下面的三个步骤进行思考

1.首先,考虑方法是否需要接收数据处理?
    要求生成指定位数的验证码,到底多少位呢?让调用者传递即可
    所以,需要一个参数,用来表示验证码的位数
​
2.接着,考虑方法是否需要有返回值?
    该方法的结果,就是为了得到验证码
    所以,返回值就是验证码;
​
3.最后,再考虑方法内部的业务逻辑
    1)先按照方法接收的验证码位数n,循环n次
    2)每次循环,产生一个字符,可以是数字字符、或者大小写字母字符
    3)定义一个String类型的变量用于记住产生的每位随机字符

按照思路,编写代码如下

public class Test2 {
    public static void main(String[] args) {
        // 目标:完成生成随机验证码。
        System.out.println(createCode(8));
    }
​
    public static String createCode(int n){
        //1)先按照方法接收的验证码位数n,循环n次
        Random r = new Random();
        //3)定义一个String类型的变量用于记住产生的每位随机字符
        String code = "";
        for (int i = 1; i <= n; i++) {
            // i = 1 2 3 4 5
            //2)每次循环,产生一个字符,可以是数字字符、或者大小写字母字符
            // 思路:随机一个0 1 2之间的数字出来,0代表随机一个数字字符,1、2代表随机大写字母,小写字母。
            int type = r.nextInt(3); // 0 1 2
            switch (type) {
                case 0:
                    // 随机一个数字字符
                    code += r.nextInt(10); // 0 - 9  code = code + 8
                    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
                    char ch2 = (char) (r.nextInt(26) + 97);
                    code += ch2;
                    break;
            }
        }
        return code;
    }
}

案例三:评委打分

各位同学,接下来,我们学习第三个案例《评委打分》,同样先阅读一下案例需求

Java编程案例(专题)_第3张图片我们把上面的需求还是用方法来编写。

1.首先,考虑方法是否需要接收数据来处理?
    需求中说,有多个评委的打分,但是到底多少个评委呢? 可以由调用者传递
    所以,我们可以把评委的个数写成参数;
​
2.接着,考虑方法是否需要有返回值?
    需求中,想要的最终结果是平均分
    所以,返回值就是平均分;
​
3.最后,再考虑方法内部的业务逻辑
    1)假设评委的个数为n个,那么就需要n个评委的分数,首先可以新建一个长度为n的数组,用来存储每一个评委的分数
    
    2)循环n次,使用Scanner键盘录入n个1~100范围内的整数,并把整数存储到数组中
    
    3)求数组中元素的总和、最大值、最小值
    
    4)最后再计算平均值; 平均值 = (和-最大值-最小值)/(数组.length-2);

代码如下

public class Test3 {
    public static void main(String[] args) {
        // 目标:完成评委打分案例。
        System.out.println("当前选手得分是:" + getAverageScore(6));
    }
​
    public static double getAverageScore(int n){
        // 1、定义一个动态初始化的数组,负责后期存入评委的打分
        int[] scores = new int[n]; // 6
        // scores = [0, 0, 0, 0, 0, 0]
​
        // 2、遍历数组的每个位置,依次录入评委的分数
        Scann

你可能感兴趣的:(java)