package _01_密码加密;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        // 通过键盘录入方式录入一个数字
        Scanner scanner = new Scanner(System.in);
        System.out.println("请录入要加密的数字");
        int password = scanner.nextInt();
        // 把输入密码放到一个数组中
        int[] arr = inputNumberConvertArray(password);
        // 对于数组当中元素进行加密处理
        //加密数组 {8 , 3 , 4, 6}
        int[] encryArr = arrayEncryHandler(arr);

        // 把数组转成一个数字
        int encryPassword = arrayConvertNumber(encryArr);
        System.out.println("最终加密数字为:"+ encryPassword);
        // 遍历数组

        for (int i = 0; i < encryArr.length; i++) {
            System.out.print(encryArr[i] +" ");
        }



    }
    public static int arrayConvertNumber(int[] encryArr) {
        int number = 0;
        for (int i = 0; i < encryArr.length; i++) {
            number = number *10 + encryArr[i];
        }
        return number;
    }

    //加密过程
    public static int[] arrayEncryHandler(int[] arr) {
        // 对于数组当中每一个元素+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--) {
            // 调转i 和j 的位置
            int temp =  arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        return arr;
    }

    public static int[] inputNumberConvertArray(int password) {
        //1 计算数组的长度
        //count 长度=0
        int count = 0;
        // 定义一个临时变量存储录入的数字 , 要不后面这个password的值一直在改变
        int temp = password;
        while (password !=0){
            // 让输入数字除等于10
            // 1983 / 10  198  count+=  198 /10 = 19  count+=
            password /= 10;
            // 每次让操作完让长度+1
            count++;
        }
        //2 动态初始化方式创建出来数组
        int[] arr = new int[count];
        //3 往数组当中添加元素
        // 定义数组中索引 0
        int index = arr.length - 1;
        //这里使用的是临时变量的值, 不能用password,password已经在上面修改成0了
        while (temp!=0){
            //求个位  1983 % 10
            int dig = temp % 10;
            //把元素添加到数组中
            arr[index] = dig;
            // 获取剩余数字
            temp /= 10;
            // 应该索引+1
            index--;
        }
        return arr;
    }
}
