Java基础练习06

需求:对数字进行加密,加密的规则如下:

        对密码中的每位数+5,再对10求余,最后将所有数字顺序反转,得到一串加密后的数字在进行传输

代码实现:

import java.util.Scanner;

public class Test6 {
    public static void main(String[] args) {

        //黑马案例04-数字加密
        //需求:对数字进行加密后传输,加密规则是:对密码中的每位数+5,再对10求余,
        // 最后将所有数字顺序反转,得到一串加密后的数字在进行传输
        System.out.println("请输入要修饰的原密码:");
        Scanner sc = new Scanner(System.in);
        int code = sc.nextInt();
        System.out.println("密码加工后修饰为:"+change(code));
    }

    public static String change(int code) {
        //1987
        int [] number = new int[4];
        String back = "";
        for (int i = 0; i < number.length; i++) {
           number[0] = code /1000;
           number[1] = code /100 % 10;
           number[2] = code /10 %10;
           number [3] = code%100%10;
        }
        for (int i = 0; i < number.length; i++) {
            number [i] = (number[i] +5) %10;

        }
        for (int i = 0,j = number.length-1; i < j; i++,j--) {
           int temp  = number [j];
           number [j] = number[i];
           number [i] = temp;
        }
        for (int i = 0; i < number.length; i++) {

            back += number[i];
        }


return back;

    }

}

代码优化改进(黑马版):

public class Test6 {
    public static void main(String[] args) {

        //黑马案例04-数字加密
        //需求:对数字进行加密后传输,加密规则是:对密码中的每位数+5,再对10求余,
        // 最后将所有数字顺序反转,得到一串加密后的数字在进行传输
        System.out.println("请输入要修饰的原密码:");
        Scanner sc = new Scanner(System.in);
        int code = sc.nextInt();
        /*System.out.println("密码加工后修饰为:" + change(code));*/
        System.out.println("加密后的结果是" + encrypt(code));
    }
 public static String encrypt(int number) {
        //1. 把密码拆分成一个一个的数字,才可以对其进行加密
        int[] numbers = split(number);

        //2. 遍历数组中的每个数字,并对其进行加密处理
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = (numbers[i] + 5) % 10;
        }

        //3. 对数组进行反转,把对数组进行反转的操作交给一个独立的方法来完成

        reverse(numbers);

        //4. 把这些加密的数字拼接起来作为加密后的结果返回即可
        String data = "";
        for (int i = 0; i < numbers.length; i++) {
            data += numbers[i];
        }
        return data;
    }

    public static void reverse(int[] numbers) {
        //反转数组的方法
        for (int i = 0, j = numbers.length - 1; i < j; i++, j--) {
            int temp = numbers[j];
            numbers[j] = numbers[i];
            numbers[i] = temp;
        }
    }

    public static int[] split(int number) {
        //该方法是用来拆解数字的
        int[] numbers = new int[4];
        numbers[0] = number / 1000;
        numbers[1] = (number / 100) % 10;
        numbers[2] = (number / 10) % 10;
        numbers[3] = number % 10;
        return numbers;
    }
}

改进的地方:在于把所有需要用到的都封装成一个个办法,之后假设某个环节不需要,直接把方法调用这里注释掉就好了,相对而言管理上比较轻松

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值