题目描述&分析
/*
* 某系统的数字密码是一个四位数,如1983.为了安全,需要加密后再传输。
* 加密规则是:对密码中的每位数都加5,再对10求余,最后将所有数字顺序反转,得到一串加密后的新数。
* 请设计满足本需求的加密串
*/
//分析
/*
* 方法需要接收一个4位数的整型参数
* 方法需要返回一个加密串
*/
代码实现
//数组反转
public static void reverse(int[] arr){
for (int i = 0,j = arr.length - 1; i < j; i++,j--) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
//数字拆分
public static int[] split(int number){
//4位数字拆分
int[] arr = new int[4];
arr[0] = number / 1000;
arr[1] = (number % 1000) / 100;
arr[2] = (number % 100) / 10;
arr[3] = number % 10;
return arr;
}
//功能函数-加密
public static String encryt(int number){
//数字拆分
int[] numbers = split(number);
//加密
for (int i = 0; i < numbers.length; i++) {
numbers[i] = (numbers[i] + 5) % 10;
}
//反转数组
reverse(numbers);
String code = "";
for (int i = 0; i < numbers.length; i++) {
code += numbers[i];
}
return code;
}
测试程序
//主函数
public static void main(String[] args) {
//test
System.out.println(encryt(1983));
}