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)+65char 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];}}//平均分:总和减去最大值和最小值除以人数减2return (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 jfor (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;}}
}