JAVA小练习
练习一:飞机票
需求:
机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
代码示例:
public class Test01 { public static double ticket(double price,int month,String type){ //1:根据month判断是淡季还是旺季 if(month>=5 && month<=10){ //旺季 // 再根据舱位 进行打折 switch (type){//type 舱位的值 case "头等舱": price = price*0.9; break; case "经济舱": price = price*0.85; break; } }else { //淡季 // 再根据舱位 进行打折 switch (type){//type 舱位的值 case "头等舱": price = price*0.7; break; case "经济舱": price = price*0.65; break; } } return price; } public static void main(String[] args) { //调用机票打折 double ticket = ticket(1200, 1, "头等舱"); System.out.println("去长沙的票价是:"+ticket); } }
练习二:打印素数
需求:
判断101~200之间有多少个素数,并输出所有素数。
代码示例:
public static int getSuShu(int n,int m){ //n是找素数起始范围 m找素数的结束范围 // 1:定义一个统计素数的变量 int count = 0; //2:遍历 n~m 取出每个数进行判断 for (int num = n; num <= m; num++) { // num 的取值从n开始到m; // num就是取出的每个数 //3:对num判断是不是一个素数 boolean flag = true;//假设是一个素数 // 遍历 推翻 for (int i = 2; i < num ; i++) {//判断num 能不能被除去1和本身 整除 if(num%i==0){//被其他数整除了 就不是素数了 flag = false; break; } } //上面循环 结束就能知道 该数是不是素数了 if(flag){ System.out.println(num+"是素数."); count++; } } // 上面的循环是对每个数 都进行了判断 每个数判断完就知道最终结果了 return count; } public static void main(String[] args) { //求 101 到 200之间素数 int count = getSuShu(101, 200); System.out.println("101到200之间的素数个数是:"+count); } }
练习三:验证码
需求:
定义方法实现随机产生一个验证码
验证码格式:
长度为4或者6 (方法可以指定位数)。
每个验证码 由 字母和数字 字符组成。
代码示例:
public class Test03 { public static void main(String[] args) { String code = createCode(4); System.out.println(code); } public static String createCode(int n){ // 返回的 一个验证码字符串 传入参数 是指定位数 // 1: 定义验证码数组 --- 验证码字符来源于此 char[] codes = {'1','2','3','4','5','6','7','8','9','0', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; // 定义空字符串 --- 用来完成验证码的拼接 String code = ""; // 2: 随机n次 --产生 n个字符 for (int i = 0; i < n; i++) { // 3: 每次循环产生一个随机字符,把随机字符拼接到空字符串中 // 3.1 产生一个随机的索引 Random rd = new Random(); int index = rd.nextInt(codes.length);//codes.length 指的是 数组的长度 索引恰巧 0~数组长度-1 //index 随机的索引 // 3.2 根据随机索引找到随机的字符 char c = codes[index];//数组名[索引] // 3.3 拼接到空字符串中 // code = code + c; code += c ;//字符串和字符拼接 形成新的字符串 } // 4:循环做完 验证码就拼接完成 返回。 return code; } }
练习四:复制数组
需求:
把一个数组中的元素复制到另一个新数组中去。
代码示例:
public class Test04 { public static void main(String[] args) { /* 需求: 把一个数组中的元素复制到另一个新数组中去。 */ int[] arr1 = {3,4,5,5,6}; // int[] arr2 = arr1;//这不是另一个因为 arr1的指向和arr2的指向是同一个 // 新建一个新的数组arr2 空间长度和arr1一致 int[] arr2 = new int[arr1.length]; // 要把 arr1每个元素 存储到arr2对应的位置 // arr2[0] = arr1[0] arr2[1]=arr1[1].... for (int i = 0; i < arr1.length; i++) { arr2[i] = arr1[i]; } System.out.println("第一个数组中的内容:"+Arrays.toString(arr1)); System.out.println("第二个数组中的内容:"+Arrays.toString(arr2)); } }
练习五:评委打分
需求 :
在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。
代码示例:
public class Test0500 { /* 需求: 歌唱比赛: 6名评委打分,根据打分求选手最终得分。 最终得分规则: 打分范围 0-100 评委人数 6 评委打分 键盘录入 求的分数 去掉最高分 去掉最低分 平均分。 */ public static void main(String[] args) { // 1:模拟 评委给选手打分,打出来的分数--存储起来 //1.1 创建一个数组 用于存储评委的打分分数 int[] scores = new int[6];//6个评委 长度是6 // 模拟评委打分 键盘录入 录入六次 // 1.2 先创建一个键盘录入对象 Scanner sc = new Scanner(System.in); // 1.3 循环录入 for (int i = 0; i < 6; i++) { // 键盘录入 评委成绩 System.out.println("请录入第"+(i+1)+"位评委的打分:"); int score = sc.nextInt();//score 录入的分数 //存到数组中 scores[i] = score; } // scores这个数组存储的是 评委录入的选手的分数 //2:根据数组的里面的分数 求出 选手的最终得分 // (总分-最高分-最低分)/4 = 最终得分 // 求总分 int sum = 0; int max = scores[0];// 求最高分 int min = scores[0]; // 求最低分 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]; } } // 循环做完 最低分 // 求最终得分 int avg = (sum-max-min)/4; System.out.println("劳大在虎扑评分:"+avg); } }
练习六:抽奖
需求:
一个大V直播抽奖,奖品是现金红包,分别有{2, 588 , 888, 1000, 10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)
888元的奖金被抽出 588元的奖金被抽出 10000元的奖金被抽出 1000元的奖金被抽出 2元的奖金被抽出
public class Test06 { public static void main(String[] args) { //1:准备五个红包--存到红包数组中 int[] redPackage = {2,588,888,1000,10000}; //2:循环五次 --- //模拟五个粉丝来抽奖 for (int i = 0; i < 5; i++) {//循环五次的 // 2.1 键盘录入粉丝名字 System.out.println("请输入您的大名:"); Scanner sc = new Scanner(System.in); String name = sc.next(); // 2.2 开始抽奖 while(true) 粉丝不知道抽几次可以抽到 while(true){ // while true 里面 模拟每一次抽 //2.3 随机红包的索引 ---random Random rd = new Random(); int index = rd.nextInt(redPackage.length); //2.4 找到对应的红包 --- 数组[索引] int money = redPackage[index]; // 2.5 抽到的空包继续抽 不是空包--- // 把数组指定位置元素值取出来...变成空包(赋值0) 代表抽到 break结束循环 if(money!=0){//不是空包 //把钱取出来 System.out.println("恭喜"+name+"这位粉丝,您抽到了:"+money); //当前位置的要变成空包 redPackage[index] = 0;//空包 break; } } } } }
卷不动了兄弟们