最近跟着B站上的黑马程序员学习Java,在上课期间老师讲解了几个有趣的基础案例,我想将下面几个案例分享给大家。
1.买飞机票
需求:
1.机票价格按着淡季旺季,头等舱与经济舱收费,输入机票原价、月份和经济舱还是头等舱。
2.机票的优惠价格如下:旺季(5-10月)头等舱九折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折
这道小题主要是来练习switch语句,if语句在Java语言上的用法(跟c++用法一样)
package 练习; import java .util. Scanner; public class plane { public static void main (String[] args) { //目标:完成买飞机票的价格计算。 //1.让用户输入机票原价,月份,仓位类型 Scanner sc =new Scanner(System.in); System.out.println("请输入机票原价: "); double money =sc.nextDouble(); System.out.println("情请输入机票的月份(1-12):"); int month =sc.nextInt(); System.out.println(" 请选择仓位类型: "); String type=sc.next(); //4.调用方法 System.out.println("机票优惠后的价格是:"+ calc(money,month,type)); } //2.定义方法接收信息,统计优惠后的价格返回 public static double calc(double money,int month,String type) { //判断用户选择的信息情况 if(month>=5&&month<=10) { //旺季 switch(type) { case "头等舱": money*=0.9; break; case"经济舱": money*=0.85; break; default : System.out.println("您输入的仓位类型有误"); money=-1;//表示信息错误 } }else if(month==11||month==12||month>=1&&month<=4) { //淡季 switch(type) { case "头等舱": money*=0.7; break; case"经济舱": money*=0.65; break; default : System.out.println("您输入的仓位类型有误"); money=-1;//表示信息错误 } }else { System.out.println("对不起,你输入的月份有误"); money=-1;//表示信息错误 } return money; } }
2.找素数
需求:判断101-200之间有多少个素数,并输出所有素数。
package 练习; /** * 需求:找到101-200之间的所有素数输出; */ public class sushu { public static void main(String[] args) { //定义一个循环,找101-200之间的素数 for(int i=101;i<=200;i++) { //1.i=101 102 103 104 .....199 200 //信号位:标记 boolean flag=true;//一开始都认为是素数 //2.判断当前遍历的这个数据是否为素数 for(int j=2;j<i/2;i++) { if(i%j==0) { flag=false; break; } } //3.根据判断的结果选择是否输出 if(flag) { System.out.println(i +"\t"); } } } }
3.开发验证码
需求:定义一个方法随机生成5位验证码,每位可能是数字,大写字母,也可能是小写字母
package 练习; import java.util.Random; //需求:定义一个方法随机生成5位验证码,每位可能是数字,大写字母,也可能是小写字母 public class yanzhengma { public static void main(String [] args) { //调用获取验证码的方法得到一个随机验证码 String code =creatcode(5); System.out.println("随机验证码:"+code); } /** * 1.定义一个方法返回一个随机验证码 */ public static String creatcode (int n) { String code=" "; Random r=new Random(); //2.定义一个for循环,循环n次,生成随机字符 for(int i=0;i<n;i++) { //3.生成一个随机字符; int type =r.nextInt(3); switch(type) { case 0: //大写字符(A 65-Z 65+25) (0-25)+65 char ch =(char)(r.nextInt(26)+65); code+=ch; break; case 1: //小写字符(a 97-z 97+25) (0-25)+97 char ch1 =(char)(r.nextInt(26)+97); code+=ch1; break; case 2: //数字字符 code+= r.nextInt(10); break; } } return code; } }
4.数组元素的复制
需求:把一个素组中的元素复制到一个新数组中去
package 练习; public class shuzu { public static void main (String[] args) { int []arr1= {11,22,33,44}; int []arr2=new int [arr1.length]; copy(arr1,arr2); } public static void printArray(int[]arr) { System.out.println("["); for(int i=0;i<arr.length;i++) { System.out.println(i==arr.length-1 ? arr[i]:arr[i]+","); } System.out.print("]"); } public static void copy(int[] arr1,int[]arr2) { for(int i=0;i<arr1.length;i++) { arr2[i]=arr1[i]; } } }
5.评委打分
需求:在唱歌比赛中,有六个评委给学生打分,分数范围为[0-100]之间的整数,选手的得分为:去掉一个最高分和一个最低分后的四个数来求平均值
package 练习; /** 在唱歌比赛中,有六个评委给学生打分,分数范围为[0-100]之间的整数, 选手的得分为:去掉一个最高分和一个最低分后的四个数来求平均值 */ import java.util.Scanner; public class dafen { public static void main (String[] args) { //1.定义一个动态初始化的数组,用于后期录入6个评委的分数 int []scores =new int [6]; //2.录入6个评委的分数 Scanner sc=new Scanner(System.in); for(int i=0;i<scores.length;i++) { System.out.println("请输入第"+(i+1)+"个评委的打分"); int score =sc.nextInt(); //3.把这个分数存入到数组的对应位置处 scores[i]=score; } //4.遍历数组中的每个数组,找出最大值、最小值、总分 int max=scores[0]; int min =scores[0],sum=0; for(int i=0;i<scores.length;i++) { if(scores[i]>max)//最大值 { max=scores[i]; } if(scores[i]<min)//最小值 { min=scores[i]; } //计算总分 sum+=scores[i]; } System.out.println("选手的最高分为:"+max); System.out.println("选手的最低分为:"+min); //统计平均分 double result =(sum-max-min)*1.0/(scores.length-2); System.out.println("选手最终得分为:"+result); } }