Java重修第三天—“方法“的案例练习

发布时间:2024年01月06日

案例一:买飞机票

题目

用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折。11月到来年4月为淡季,头等舱7折,经济舱6.5折请开发程序计算出用户当前机票的优惠价。

分析

本节重点是对方法的练习,因此需要确定

1、方法是否需要接收数据?
2、方法是否需要返回数据
3、方法逻辑结构如何写呢?

第一个问题:我们需要接收机票原价、当前月份和仓位类型。
第二个问题:需要返回计算出的机票优惠价。
第三个问题:用if和switch组合即可

代码

public class Example_03 {
    public static void main(String[] args) {
        int month = 5;
        double money = 547;
        String type = "头等舱";
        money = calPrice(money, month, type);
        System.out.println("飞机票的优惠价为:" + money);

    }

    private static double calPrice(double money, int month, String type) {
        // 旺季
        if (month <= 10 && month >= 5) {
            switch (type) {
                case "头等舱":
                    money = money * 0.9;
                    break;
                case "经济舱":
                    money = money * 0.85;
                    break;
            }
        } else {
            // 淡季
            switch (type) {
                case "头等舱":
                    money = money * 0.7;
                    break;
                case "经济舱":
                    money = money * 0.65;
                    break;
            }
        }
        return money;
    }
}

案例二:生成验证码

题目

在登陆时候一般需要填写验证码,验证码正确后才能进行登录,验证码一般包含数字和大小写字母。

分析

输入:生成验证码个数

输出:字符串类型的验证码

代码

import java.util.Random;

public class Example_03 {
    public static void main(String[] args) {
        int len = 4;
        String code = getCode(len);
        System.out.println("生成的验证码为:" + code);
    }

    private static String getCode(int len) {

        Random r = new Random();
        String code = "";
        for (int i = 0; i < len; i++) {
            int type = r.nextInt(3);
            switch (type){
                case 0:
                    code += r.nextInt(10);
                    break;
                case 1:
                    // A - Z : 65 + 25
                    code += (char) (r.nextInt(25) + 65);
                    break;
                case 2:
                    // a - z : 97 + 25
                    code += (char) (r.nextInt(25) + 97);
                    break;
            }
        }
        return code;
    }
}

案例三:评委打分

题目

某歌唱比赛,需要开发一个系统:可以录入 � 个评委的打分,录入完毕,去掉最大值和最小值后计算平均分作为选手得分。

分析

1、评委的分数是后期录入的,一开始不知道具体分数,因此需要定义一个动态数组。 2、由于分数是手动录入的,因此需要使用Scanner读取评分。

代码

import java.text.DecimalFormat;
import java.util.Scanner;

public class Example_03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入评委的人数:");
        int n = sc.nextInt();
        double[] scores = new double[n];

        for (int i = 0; i < scores.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个评委的评分:");
            scores[i] = sc.nextDouble();
        }
        getScore(scores);
    }

    private static void getScore(double[] scores) {

        double max = scores[0];
        int indexMax = 0;
        for (int i = 1; i < scores.length; i++) {
            if (scores[i] > max ){
                max = scores[i];
                indexMax = i;
            }
        }

        double min = scores[0];
        int indexMin = 0;
        for (int i = 1; i < scores.length; i++) {
            if (scores[i] < min ){
                min = scores[i];
                indexMin = i;
            }
        }
        int sum = 0;
        for (int i = 0; i < scores.length; i++) {
            if (i == indexMax || i == indexMin) {
                continue;
            }
            sum += scores[i];
        }
        DecimalFormat df = new DecimalFormat("#.00");
        System.out.println(df.format(sum/(scores.length-2)));
//        return df.format(sum/(scores.length-2));
    }


}

案例四:发红包

案例

过年微信群里面发起了抢红包活动,分别有:9、666、188、520、99999五个红包。请模拟其他人来抽奖,按照先来先得,随机抽取,抽完即止,注意:一个红包只能被抽一次,先抽或后抽哪一个红包是随机的,示例如下(不一定是下面的顺序)

分析

1、如何确保每个红包只能抽一次;

2、如何保证随机抽取;

3、如何确保抽完后结束活动。

其实很简单,只需要将数组随机打乱就行了,然后一次输出即可。

代码

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Example_03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入抽取红包的个数:");
        int n = sc.nextInt();
        ArrayList<Integer> redBug = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            System.out.println("请输入第" + (i+1) + "个红包的金额");
            redBug.add(sc.nextInt());
        }

        // 打乱数组顺序
        Collections.shuffle(redBug);
        int num = 0;
        while (++num <= n){
            System.out.print("请输按任意键获取红包:");
            sc.next();
            System.out.println("你获得的红包金额为:" + redBug.get(num-1));
        }
        System.out.println("红包领取完毕!");
    }
}

希望多点赞收藏关注,评论或私信交流!~

文章来源:https://blog.csdn.net/abc123mma/article/details/135431409
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。