需求:对数字进行加密,加密的规则如下:
对密码中的每位数+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;
}
}
改进的地方:在于把所有需要用到的都封装成一个个办法,之后假设某个环节不需要,直接把方法调用这里注释掉就好了,相对而言管理上比较轻松