案例一:买飞机票
各位同学,我们先来学习第一个案例《飞机买票》,先仔细阅读一下案例需求
我们来分析一下,这个需求该如何实现。前面我跟同学们讲过,将来我们去做一些需求,都是一个一个方法来实现的,所以在这里我们也采用方法来编写。
这个方法如何编写呢?采用下面的方式来思考
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; } }
案例二:开发验证码
各位同学,接下来,我们学习第二个案例《开发验证码》,同样先阅读一下案例需求
分析一下,需求是要我们开发一个程序,生成指定位数的验证码。考虑到实际工作中生成验证码的功能很多地方都会用到,为了提高代码的复用性,我们还是把生成验证码的功能写成方法比较好。
那生成验证码的方法该怎么写呢?按照下面的三个步骤进行思考
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; } }
案例三:评委打分
各位同学,接下来,我们学习第三个案例《评委打分》,同样先阅读一下案例需求
我们把上面的需求还是用方法来编写。
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