题目:
请将加密后的数据解密出来。某系统的数字密码(大于 0)。比如 1983,采用加密方式进行传输。
规则如下:
每位数加上 5;再对 10 求余;最后将所有数字反转得到一串新数。
按照以上规则进行解密:
比如 1983 加密之后变成 8346;解密之后变成 1983。
代码:
//请将加密后的数据解密出来
package demo01;
import java.util.Scanner;
public class HelloJava {
public static void main(String[] args) {
//输入需要解密的整数:
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个大于 0 的整数:");
int number = sc.nextInt();
sc.close();
if(number > 0) {
//将 number 的值赋值给 copyNumber 方便后续使用:
int copyNumber = number;
//计算 number 有多少位:
int count = 0;
while(number != 0) {
number /= 10;
count++;
}
//定义数组用于存放 number 的各位数:
int[] array = new int[count];
int index = array.length - 1;
while(copyNumber != 0) {
int ge = copyNumber % 10;
copyNumber /= 10;
array[index] = ge;
index--;
}
//反转数组里面的数:
for(int i = 0, j = array.length - 1; i < j; i++, j--) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
//各位数如果大于等于 0 并且小于等于 4 则进行 +10 处理;其余各位数(大于等于 5 并且小于等于 9)不变:
for(int i = 0; i < array.length; i++) {
if(array[i] >= 0 && array[i] <= 4) {
array[i] += 10;
}
}
//将各位数 -5:
for(int i = 0; i < array.length; i++) {
array[i] -= 5;
}
//打印解密后的结果:
int result = 0;
for(int i = 0; i < array.length; i++) {
result = result * 10 + array[i];
}
System.out.println("解密后的数字为:" + result);
}else {
System.out.println("您输入的数字不合法!");
}
}
}
运行结果: