买飞机票
需求:
用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折;11月到来年4月为淡季,头等舱7折,经济舱6.5折,请开发程序计算出用户当前机票的优惠价。
参考写法:
package user.helloworld; public class Test { public static void main(String[] args) { System.out.println("优惠之后的票价为:" + calculate(8,1000,"经济舱")); } public static double calculate(int mouth,double price,String type) { if(mouth >= 5 && mouth <= 10) { switch(type) { case "头等舱": price = price * 0.9; break; case "经济舱": price = price * 0.85; break; } } else { switch (type) { case "头等舱": price = price * 0.7; break; case "经济舱": price = price * 0.65; break; } } return price; } }
验证码
需求:
开发一个程序,可以生成指定位数的验证码,每位可以是数字、大小写字母。
- 方法需要接收一个整数,控制生成验证码的位数。
- 方法需要返回生成的验证码。
- 方法内部的业务:使用for循环依次生成每位随机字符,并使用一个编辑String类的变量把每个字符连接起来,最后返回该变量即可。
参考写法:
package user.helloworld; import java.util.Random; public class Test { public static void main(String[] args) { System.out.println(CreateCode(6)); } public static String CreateCode(int n){ Random r = new Random(); //取随机数 int type; //用于确定字符类型 String code = ""; //建立我们接收验证码的字符串变量 for(int i = 0; i < n; i++){ //根据接收的n参数,每循环一次就多一位字符 type = r.nextInt(4); //这里随机取4个值,给数字字符较大的概率 switch(type){ case 0: case 1: code += r.nextInt(10); //随机一个数字字符 break; case 2: code += (char)(r.nextInt(26) + 65); //随机一个大写字母字符 break; case 3: code += (char)(r.nextInt(26) + 97); //随机一个小写字母字符 break; } } return code; } }
评委打分
需求:
在唱歌比赛中,可能有多名评委要给选手打分,分数是[0-100]之间的整数。选手最后得分为:去掉最高分、最低分后剩余分数的平均分,请编写程序能够录入多名评委的分数,并算出选手的最终得分。
- 方法需要接收评委的人数。
- 方法需要返回计算出的选手最终得分
- 方法内部的业务:定义数组,录入评委的分数存入到数组中去,接着,我们就需要遍历数组中的分数,计算出总分,并找出最高分,最低分、最后按照这些数据算出选手最终得分并返回即可。
或者直接在录入过程中直接找出一个最高分和一个最低分,并求和。
参考写法:
package user.helloworld; import java.util.Scanner; public class Test { public static void main(String[] args) { System.out.println("当前选手的得分是:" + getAverageScore(6)); } public static double getAverageScore(int number){ //首先要有变量来录入评委的分数 Scanner sc = new Scanner(System.in); int[] scores = new int[number]; //然后要计算平均值,要有一个累加值,再除以评分的数量 int sum = 0; //评委打分只有0-100的整数 //利用已知需求,可以先把存储最高分和最低分的变量建立 int max = 0,min = 101; //开始录入 for(int i = 0; i < number; i++){ System.out.println("请您输入第" + (i + 1) + "位评委的评分:"); scores[i] = sc.nextInt(); if(scores[i] > max) max = scores[i]; if(scores[i] < min) min = scores[i]; sum += scores[i]; } return (double) ((sum - max - min) / (number - 2)); } }
数组拷贝
需求:
请把一个整型数组,例如存了数据:11,22,33,拷贝成一个一模一样的新数组出来。
- 方法需要接收一个整型数组(原数组)
- 方法需要返回一个新的、一模一样的整型数组。
- 方法内部的业务:创建一个长度一样的整型数组做为新数组,并把原数组的元素对应位置赋值给新数组,最终返回新数组即可。
参考写法:
package user.helloworld; public class Test { public static void main(String[] args) { int[] arr = {10,20,30,40}; int[] arr2 = copy(arr); printIntArray(arr2); } public static int[] copy(int[] arr){ int[] arr_copy = new int[arr.length]; for (int i = 0; i < arr.length; i++) { arr_copy[i] = arr[i]; } return arr_copy; } public static void printIntArray(int[] arr){ System.out.print("[" + " "); for (int i = 0; i < arr.length; i++) { System.out.print(i == (arr.length - 1) ? arr[i] + " " + "]" : arr[i] + " "); } } }
找素数
需求:
判断某个整数区间内有多少个素数,并输出所有素数。
说明:除了1和它本身以外,不能被其他正整数整除,就叫素数。比如:3、7就是素数,而9、21等等不是素数。
- 方法需要接收一个区间,以便找该区间中的素数。
- 方法需要返回找到的素数个数。
- 方法内部的实现逻辑:使用for循环来产生如101到200之间的每个数;每拿到一个数,判断该数是否是素数;判断规则是:从2开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数;根据判定的结果来决定是否输出这个数据(是素数则输出);最后还需要统计素数的个数并返回。
参考写法1
public class Test { public static void main(String[] args) { System.out.println("素数的个数为:" + search(101,200) + "个素数"); } public static int search(int start,int end){ int count = 0; // 用于记录素数的个数 //第一种方法可以用标识符来帮助判断 boolean flag = true; //开始循环判断素数 for (int i = start; i <= end; i++) { flag = true; for(int j = 2; j <= i/2; j++){ if(i % j == 0){ //不是素数 flag = false; break; } } if(flag == true){ System.out.println(i); count++; } } return count; } }
运行结果:
参考写法2
public class Test { public static void main(String[] args) { System.out.println("素数的个数为:" + search(101,200) + "个"); } public static int search(int start,int end){ int count = 0; // 用于记录素数的个数 //第二种方法就是用continue语句,类似于C语言中的goto语句 OUT: //开始循环判断素数 for (int i = start; i <= end; i++) { for(int j = 2; j <= i/2; j++){ if(i % j == 0){ //不是素数 continue OUT; } } System.out.println(i); count++; } return count; } }
运行结果:
END