Java学习笔记2024/2/7

练习四:复制数组

需求:

把一个数组中的元素复制到另一个新数组中去。

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求余,
            最后将所有数字反转,
            得到一串新数。*/
​
        //1983
        int arr[] = {1,9,8,3};
        //加5
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i] + 5;//6 14 13 8
        }
        //模10
        for (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 6
            arr[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;
            }
        }
        //-5
        for (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]);
        }
    }
}

你可能感兴趣的:(java,学习,笔记)