需求:
– 某系统的数字密码(大于0).比如1983,采用加密方式进行传输。
规则如下:
– 每位数加上5
– 再对10求余
– 最后将所有数字反转
– 得到新的一串数字

Admin_Log




代码段缩略图
点击查看完整代码图片:加密 – 1 – 将每一位数字都添加到数组图片展示



public class encryption2 {
    public static void main(String[] args) {
        /*
        需求:
            - 把整数上的每一位都添加到数组当中
            - 反向推导
         */


        // 1. 计算出数组的长度
        int number = 1983;

        // 定义一个临时变量记录number的值,为了第三步的时候能够再次使用
        int temp = number;
        // 定义一个变量进行统计
        int count = 0;
        while (number != 0) {
            // 每一次循环就去掉右边的一个数字
            number = number / 10;
            count++;
        }
//        System.out.println(count);

        // 2. 定义数组
        // 动态初始化 [ 不知道长度是多少 ]
        int[] arr = new int[count];
        // 3. 把整数上的每一位都添加到数组当中
        int index = arr.length - 1;
        while (temp != 0) {      // 12345
            // 获取temp里的每一位数字
            int ge = temp % 10;
            // 再去掉右边的数字
            temp = temp / 10;
            // 把当前获取到的个位添加到数组当中
            arr[index] = ge;
            index--;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}




代码段缩略图
点击查看完整代码图片:加密 – 2 – 将每一位数字都添加到数组图片展示



public class encryption {
    public static void main(String[] args) {
        /*
        需求:
            - 某系统的数字密码(大于0).比如1983,采用加密方式进行传输。
            规则如下:
                - 每位数加上5
                - 再对10求余
                - 最后将所有数字反转
                - 得到新的一串数字
         */

        // 1. 把整数里面的每一位数放到数组当中
        int[] arr = {1, 9, 8, 3};
        // 2. 加密
        // 每一位数字加上5
        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 temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } // 8 3 4 6 --> 8346
        // 3. 将数组里面的每一个数字进行拼接,变成加密之后的结果
        // 定义最终变量
        int number = 0;
        for (int i = 0; i < arr.length; i++) {
            // 将number进行 *10操作是为了简化操作
            // 第一次:0*10+8=8
            // 第二次:8*10+3=80+3=83
            // 第三次:83*10+4=830+4=834
            // 第四次:834*10+6=8340+3=8346
            number = number * 10 + arr[i];
        }
        System.out.println(number);
    }
}




代码段缩略图
点击查看完整代码图片:解密图片展示



public class deciphering {
    public static void main(String[] args) {
        /*
        需求:
            - 某系统的数字密码(大于0).比如1983,次啊用加密方式进行传输。
            规则如下:
                - 每位数加上5
                - 再对10求余
                - 最后将所有数字反转
                - 得到新的一串数字
            按照以上规则进行解密:
                - 比如1983加密之后变成8346,解密之后变成1983
         */

        // 1. 定义数组记录解密之后的结果
        int[] arr = {8, 3, 4, 6};
        // 2. 反转
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        // 3. 由于加密是通过对10取余的方式进行获取的
        // 所以在解密的时候就需要判断,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;
            }
        }
        // 4. 每一位减去5
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i] - 5;
        }
        // 5. 获取数组里面的每一位数字拼接成最终的结果
        int number = 0;
        for (int i = 0; i < arr.length; i++) {
            number = number *10+arr[i];
        }
        System.out.println(number);
    }
}