目录
买飞机票
找素数
验证码生成
评委打分
数字加密
需求:机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
package com.beijing.test; import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //输入机票 System.out.print("请输入机票原价:"); double price = sc.nextDouble(); //输入月份 System.out.print("请输入月份:"); int month = sc.nextInt(); //输入仓位类型 System.out.print("请输入仓位类型(头等舱或经济舱):"); String type = sc.next(); //调用函数进行计算 double new_price = calc(price, month, type); System.out.println("打折后的机票价格为:"+new_price); } /* 定义一个方法用来接收 机票原价、月份、头等或者经济舱 * */ public static double calc(double price, int month, String type ){ //判断月份大小,如果是旺季 if(month >= 5 && month <= 10){ //接着判断是经济舱还是头等舱,因为判断的是具体的值,所以用switch switch (type){ case "经济舱": price *= 0.85; break; case "头等舱": price *= 0.9; break; default: System.out.println("您输入的仓位不正常"); price = -1; } //如果是淡季 } else if(month == 11 || month == 12 || month >= 1 & month <= 4){ switch (type) { case "经济舱": price *= 0.65; break; case "头等舱": price *= 0.7; break; default: System.out.println("您输入的仓位不正常"); price = -1; } }else{ System.out.println("您输入的月份有误"); price = -1; } return price; } }
总结:
素数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数。
要求:判断101-200之间有多少个素数,并输出所有素数
package com.beijing.test; import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { for (int i = 101; i <= 200 ; i++) { boolean flag = true; for (int j = 2; j < i / 2 ; j++) { //对其取余,如果余数为0,说明能被整数,即不是素数 if (i % j == 0){ flag = false; //说明不是素数 break; } } if(flag){ //说明是素数 System.out.print(i + ", "); } } } }
总结:
需求:定义方法实现随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母。
思考:要求产生5位的随机验证码,则可以让每一位都进行随机,然而随机的情况有三种:大写字母、小写字母、数字。我们可以套用两层随机,一层随机是字母还是数字类型。另一层随机成具体的数据
package com.beijing.test; import java.util.Random; import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { //3. 调用函数 String code = createCode(5); System.out.println(code); } public static String createCode(int n){ //1. 定义字符串用来记录随机验证码 String code = ""; Random r = new Random(); //2. 定义for循环,生成n位验证码 for (int i = 0; i < n; i++) { //生成一个随机字符:大小字母,小写字母,数字 int type = r.nextInt(3); //0,1,2 switch (type){ case 0: //大写字符(A - Z 65 + 26) char ch = (char)(r.nextInt(26) + 65); code += ch; break; case 1: //小写字符(a - z 97 + 26) char ch1 = (char)(r.nextInt(26) + 97); code += ch1; break; case 2: //数字 code += r.nextInt(10); //0-9 break; } } return code; } }
总结:
需求:在唱歌比赛中,有6名评委给选手打分,分数范围是[0-100]之间的整数。选手的最后得分为去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。
分析:
package com.beijing.test; import java.util.Random; import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { //1. 定义一个动态初始化数组用于接收分数 int[] scores = new int[6]; //2. 录入分数 Scanner sc = new Scanner(System.in); for (int i = 0; i < scores.length; i++) { System.out.print("请输入第"+i+1+"个评委的打分: "); int score = sc.nextInt(); //将分数存入到数组对应的位置 scores[i] = score; } //3. 遍历数组找出最大值,最小值,总分 int max = scores[0]; int min = scores[0]; int 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); //4. 求平均分 double result = (sum - max - min)/ (scores.length -2); System.out.println("最后得分为:" + result); } }
某系统的数字密码︰比如1983,采用加密方式进行传输,规则如下︰先得到每位数,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新数。
package com.beijing.test; import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { //1.定义一个数组存入需要加密的数据 System.out.print("请输入您要加密的数字个数:"); Scanner sc = new Scanner(System.in); int length = sc.nextInt(); int[] arr = new int[length]; //2. 录入要加密的数字并存入到数组中 for (int i = 0; i < arr.length; i++) { System.out.print("请输入要加密的第"+(i + 1)+"个数字:"); int number = sc.nextInt(); arr[i] = number; } //3.打印数据内容看一下 System.out.println("要加密的数据为:"); printArray(arr); //4.对数组中的数据内容进行加密 for (int i = 0; i < arr.length; i++) { arr[i] = (arr[i] + 5) % 10; } //5.对数组中加密的内容进行反转 for (int i = 0, j = arr.length - 1; i < j; i++, j--){ //直接交换两者位置的值 int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } //打印最后加密的结果看看 System.out.println("最终加密后的数据为:"); printArray(arr); } //定义打印数组的方法 public static void printArray(int[] arr){ System.out.print("["); if (arr != null && arr.length > 0){ for (int i = 0; i < arr.length; i++) { System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ","); } } System.out.println("]"); } }
总结:
1. 知道如何对数组元素进行反转。定义两个变量分别占数组的首尾位置,一个变量往前走,一个变量往后走,同步交换双方位置处的值