文章目录
前言
🌏案例一:买飞机票
🌙需求:
⌛分析:
⚡代码:
⚡示例:
🌏案例二:开发验证码
🌙需求:
⌛分析:
⚡代码:
⚡示例:
🌏案例三:评委打分
🌙需求:
⌛分析:
⚡代码:
⚡示例:
🌏案例四:数字加密
🌙需求:
⌛分析:
⚡代码:
⚡示例:
🌏案例五:猜数字
🌙需求:
⚡分析:
⌛代码:
⚡示例:
前言
使用Java基础知识对几个案例进行编程,提升编程能力
涉及到的知识点
变量、数组
运算符:基本运算符、关系运算符、逻辑运算符…
程序流程控制:if、switch;for、while;死循环、循环嵌套
跳转关键字:break、continue、return。
方法
关于提升编程思维和编程能力的建议
编程思维和编程能力不是一朝一夕形成的,需要时间的沉淀和大量练习。
具体措施:勤于练习代码,勤于思考,孰能生巧。
前期:先模仿,后期:再创新。
🌏案例一:买飞机票
🌙需求:
机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
⌛分析:
定义一个方法可以进行键盘录入机票原价、月份和机舱类型。
使用if判断月份是是旺季还是淡季,使用switch分支判断是头等舱还是经济舱。
选择对应的折扣进行计算并返回计算的结果。
1.遇到判断值匹配的时选择什么结构实现?
使用switch分支结构实现。
2.遇到判断区间范围的时候选择什么结构实现?
使用if分支结构实现。
⚡代码:
import java.util.Scanner; public class Demo1 { public static void main(String[] args){ double original,price=0; int month; String type; System.out.print("请输入机票原价、月份和机舱类型:"); Scanner read=new Scanner(System.in); original=read.nextDouble(); month=read.nextInt(); type=read.next(); if(month>=5 && month<=10){ switch(type){ case "经济舱":price=0.85*original; break; case "头等舱":price=0.9*original; break; default:System.out.println("\n请输入正确的机舱类型"); } } else if ((month>=1 && month<=4 )||(month>=11 && month<=12)) { switch(type){ case "经济舱":price=0.65*original; break; case "头等舱":price=0.7*original; break; default:System.out.println("\n请输入正确的机舱类型!"); } }else { System.out.println("请输入正确的月份!"); } System.out.println("机票价格:"+price); } }
⚡示例:
请输入机票原价、月份和机舱类型:1000 5 头等舱 机票价格:900.0
🌏案例二:开发验证码
🌙需求:
定义方法实现随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母。
⌛分析:
定义一个方法,生成验证码返回:方法参数是位数、方法的返回值类型是String。
在方法内部使用for循环生成指定位数的随机字符,并连接起来。
把连接好的随机字符作为一组验证码进行返回。
随机验证码的核心实现逻辑是如何进行的?
①定义一个String类型的变量存储验证码字符。
②定义一个for循环,循环5次。
③随机生成0|1|2的数据,依次代表当前位置要生成数字|大写字母|小写字母。
④把0、1、2交给switch生成对应类型的随机字符,把字符交给String变量。
⑤循环结束后,返回String类型的变量即是所求的验证码结果。
⚡代码:
import java.util.Random; public class Demo2 { public static void main(String[] args){ System.out.println("生成的验证码为:"+code(5)); } public static String code(int x){ Random r=new Random(); String code=" "; for(int i=1;i<6;i++){ int type=r.nextInt(3);//随机生成数字0,1,2 。分别代表数字、大写字母、小写字母 switch (type){ case 0: code += r.nextInt(10);//随机生成0~9之间的数字 break; case 1: char c1=(char)(r.nextInt(26)+65);//随机生成26个大写字母 code += c1; break; case 2: char c2=(char)(r.nextInt(26)+97);//随机生成26个小写字母 code += c2; } } return code; } }
⚡示例:
生成的验证码为: 34rlx
🌏案例三:评委打分
🌙需求:
在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。
⌛分析:
把6个评委的分数录入到程序中去 ----> 使用数组
int[] scores = new int[6];
遍历数组中每个数据,进行累加求和,并找出最高分、最低分。
按照分数的计算规则算出平均分。
⚡代码:
import java.util.Random; public class Demo3 { public static void main(String[] args){ int[] scores=new int[6]; int max,min,total=0; Random r=new Random(); System.out.print("六个评委打出的分数为:"); for(int i=0;i<6;i++){ scores[i]=r.nextInt(101); System.out.print(scores[i]+"\t"); total+=scores[i]; } max=min=scores[0]; for(int i=1;i<6;i++){ if(max<scores[i]){ max=scores[i]; } if(min>scores[i]){ min=scores[i]; } } System.out.println("\n去掉一个最高分:"+max); System.out.println("去掉一个最低分:"+min); float average=(total-max-min)/4; System.out.println("最终选手的得分为:"+average); } }
⚡示例:
六个评委打出的分数为:41 84 72 24 62 87 去掉一个最高分:87 去掉一个最低分:24 最终选手的得分为:64.0
🌏案例四:数字加密
🌙需求:
某系统的数字密码,比如1983,采用加密方式进行传输,规则如下:先得到每位数,然后每位数都加上
5 , 再对10求余,最后将所有数字反转,得到一串新数。
⌛分析:
将每位数据存入到数组中去,遍历数组每位数据按照规则进行更改,把更改后的数据从新存入到数组中。
将数组的前后元素进行交换,数组中的最终元素就是加密后的结果。
⚡代码:
import java.util.Scanner; public class Demo4 { public static void main(String[] args){ int[] s=new int[4]; System.out.print("输入密码:"); Scanner in=new Scanner(System.in); for(int i=0;i<s.length;i++){ s[i]=in.nextInt(); } for(int i=0;i<s.length;i++){ s[i]+=5; s[i]%=10; } for (int i = 0,j= s.length-1; i < j; i++,j--) { int temp=s[j]; //用一个临时的变量进行存储 s[j]=s[i]; //反转密码 s[i]=temp; } String str=""; for(int i=0;i<s.length;i++){ str+=s[i]; } System.out.println("加密后的结果:"+str); } }
⚡示例:
输入密码:1 9 8 3 加密后的结果:8346
练习:请将加密后的数据解密出来
🌏案例五:猜数字
🌙需求:
在1到100之间随机指定一个数,玩家在此范围进行猜数,使用java编程完成小游戏。
⚡分析:
首先需要产生一个随机的数字,并且不能再发生变化,用Random的nextInt()方法;
获取键盘输入的数字,用Scanner的nextInt()方法;
if语句比较猜的数字与随机生成的数字
⌛代码:
import java.util.Random; import java.util.Scanner; public class Demo5{ public static void main(String[] args) { Random r = new Random(); int randomNum = r.nextInt(100) + 1; //[1,100];如果不+1,那就是0-99 Scanner sc = new Scanner(System.in); System.out.println("请输入你猜测的数字:"); for(int i=0;i<10;i++) { int guessNum = sc.nextInt(); if(randomNum < guessNum) { System.out.println("太大了!请重试"); } else if (randomNum > guessNum) { System.out.println("太小了!请重试"); } else { System.out.println("猜测对了"); break; //如果猜中,不再重试 } } System.out.println("游戏结束");//答对或超过十次退出 } }
⚡示例:
请输入你猜测的数字: 48 太小了!请重试 78 太大了!请重试 67 太小了!请重试 70 太小了!请重试 73 太大了!请重试 72 猜测对了 游戏结束