练习四:复制数组
需求:
把一个数组中的元素复制到另一个新数组中去。
package com.angus.comprehensiveExercise; public class test4 {public static void main(String[] args) {//需求:// 把一个数组中的元素复制到另一个新数组中去。int[] arr = {1,3,2};int[] brr = new int[3];for (int i = 0; i < arr.length; i++) {brr[i] = arr[i];}for (int i = 0; i < brr.length; i++) {System.out.println(brr[i]);}System.out.println("^^");} }
练习五:评委打分
需求 :
在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。
package com.angus.comprehensiveExercise; import java.util.Scanner; public class test5 {public static void main(String[] args) {//需求 :// 在唱歌比赛中,有6名评委给选手打分,// 分数范围是[0 - 100]之间的整数。// 选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,// 请完成上述过程并计算出选手的得分。//接收6个分数int[] scoreArr = getScore();for (int i = 0; i < scoreArr.length; i++) {System.out.println(scoreArr[i]);}//最大值int max = getMax(scoreArr);//最小值int min = getMin(scoreArr);//求和int sum = getSum(scoreArr);//求平均值int avg = (sum - max - min) / (scoreArr.length - 2);System.out.println("平均分为:" + avg); System.out.println("^^");}//存6个分数public static int[] getScore() {int[] scores = new int[6];Scanner scanner = new Scanner(System.in);for (int i = 0; i < scores.length;) {System.out.println("请输入分数");int score = scanner.nextInt();if (score >= 0 && score <= 100) {scores[i]=score;i++;} else {System.out.println("输入不合法,请重新输入");}}return scores;} public static int getMax(int[] scoreArr) {int max = scoreArr[0];for (int i = 1; i < scoreArr.length; i++) {if (scoreArr[i] >= max) {max = scoreArr[i];}}return max;}public static int getMin(int[] scoreArr) {int min = scoreArr[0];for (int i = 1; i < scoreArr.length; i++) {if (scoreArr[i] <= min) {min = scoreArr[i];}}return min;}public static int getSum(int[] scoreArr) {int sum = 0;for (int i = 0; i < scoreArr.length; i++) {sum = sum + scoreArr[i];}return sum;} }
练习六:数字加密
需求:
某系统的数字密码(大于0),比如1983,采用加密方式进行传输。
规则如下:
先得到每位数,然后每位数都加上5 , 再对10求余,最后将所有数字反转,得到一串新数。
package com.angus.comprehensiveExercise; public class test6 {public static void main(String[] args) {/*某系统的数字密码(大于0)。比如1983,采用加密方式进行传输,规则如下:每位数加上5再对10求余,最后将所有数字反转,得到一串新数。*/ //1983int arr[] = {1,9,8,3};//加5for (int i = 0; i < arr.length; i++) {arr[i] = arr[i] + 5;//6 14 13 8}//模10for (int i = 0; i < arr.length; i++) {arr[i] = arr[i] % 10;//6 4 3 8}//反转for (int i = 0,j = arr.length - 1; i < j; i++,j--) {int temp = arr[i];//8 3 4 6arr[i] = arr[j];arr[j] = temp;}//不能直接打印,先拼起来//拼起来有两种拼,//第一种利用字符串拼接后就成了字符串,不能用于例如回文数的比较,但可以将数字与字母字符拼接起来,//第二种只能用于数字,但是可以用来跟数字比较 //第一种String num = "";for (int i = 0; i < arr.length; i++) {num = num + arr[i];}System.out.println(num); //第二种int num1 = 0;for (int i = 0; i < arr.length; i++) {num1 = num1 * 10 + arr[i];}System.out.println(num1); System.out.println("^^");} }
package com.angus.comprehensiveExercise; import java.util.Scanner; public class test6_6 {public static void main(String[] args) {//题目//键盘录入然后加密 //把整数上的每一位都添加到数组当中 1983//反向推导Scanner scanner = new Scanner(System.in);System.out.println("输入加密数字");int number = scanner.nextInt();int temp = number;int count = 0;while (number != 0){number = number / 10;count++;}int arr[] = new int[count];for (int i = arr.length - 1; i >= 0; i--) {int ge = temp /1 %10;temp = temp / 10;arr[i] = ge;}for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}System.out.println();//验证结果 1 9 8 3 for (int i = 0; i < arr.length; i++) {arr[i] = arr[i] + 5;}//再对10求余for (int i = 0; i < arr.length; i++) {arr[i] = arr[i] % 10;}//将所有数字反转for (int i = 0, j = arr.length - 1; i < j; i++, j--) {int temp1 = arr[i];arr[i] = arr[j];arr[j] = temp1;}//8 3 4 6 --> 8346//3.把数组里面的每一个数字进行拼接,变成加密之后的结果int number1 = 0;for (int i = 0; i < arr.length; i++) {number1 = number1 * 10 + arr[i];}System.out.println(number1);}}
练习七:数字解密
把上一题加密之后的数据进行解密
package com.angus.comprehensiveExercise; public class test7 {public static void main(String[] args) {//把上一题加密之后的数据进行解密//每位数加上5//再对10求余,//最后将所有数字反转,//得到一串新数。//按照以上规则进行解密://比如1983加密之后变成8346,解密之后变成1983 //定义数组int arr[] = {8, 3, 4, 6};//数组反转,需要两个指针for (int i = 0,j = arr.length - 1; i < j; i++,j--) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}//上对下 模10,那么分析上的范围: 0~9加5 -> 5~14 -> 分成5~9与10~14,所以0~4就+10,5~9就不变for (int i = 0; i < arr.length; i++) {if(arr[i]>=0 && arr[i]<=4){arr[i]=arr[i]+10;}}//-5for (int i = 0; i < arr.length; i++) {arr[i]=arr[i]-5;} //拼接String num = "";for (int i = 0; i < arr.length; i++) {num = num + arr[i];}System.out.println(num); System.out.println("^^");} }
练习八:抽奖
需求:
一个大V直播抽奖,奖品是现金红包,分别有{2, 588 , 888, 1000, 10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)
888元的奖金被抽出 588元的奖金被抽出 10000元的奖金被抽出 1000元的奖金被抽出 2元的奖金被抽出
package com.angus.comprehensiveExercise; import java.util.Random; public class test8 {public static void main(String[] args) {//需求://一个大V直播抽奖,奖品是现金红包,//分别有{2, 588 , 888, 1000, 10000}五个奖金。//请使用代码模拟抽奖,打印出每个奖项,//奖项的出现顺序要随机且不重复。//打印效果如下:(随机顺序,不一定是下面的顺序)//888元的奖金被抽出//588元的奖金被抽出//10000元的奖金被抽出//1000元的奖金被抽出//2元的奖金被抽出 //把奖项打乱然后遍历int[] arr = {2,588,888,1000,10000};Random random = new Random();for (int i = 0; i < arr.length; i++) {//获取随机索引int ranIndex = random.nextInt(arr.length);//交换int temp = arr[i];arr[i] = arr[ranIndex];arr[ranIndex] = temp;}//遍历for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}} }