密码大于0,加密规则:先得到每位数,然后每位数加5,再对10求余,最后将所有数字反转,得到一串新数字//批量操作放到数组里
例如: 1 9 8 3
+5 6 14 13 8
%10 6 4 3 8
反转 8 3 4 6
import java.util.Scanner;
public class Test24 {
public static void main(String[] args) {
//数字加密密码大于0,加密规则:先得到每位数,然后每位数加5,再对10求余,最后将所有数字反转,得到一串新数字//批量操作放到数组里
//例如:1983:+5变为 6 14 13 8 ; %10变为 6 4 3 8 ;反转变为 8 3 4 6
//1.把整数每一位放到数组中
//①计算数组长度
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
//定义一个临时变量记录num的值
int tmp1=num;
//定义一个变量进行统计
int count=0;
while(num!=0){
num=num/10;
count++;
}
//②定义数组
int[] arr=new int[count];
//③把整数每一位放到数组中
//定义索引
int index=arr.length-1;
while(tmp1!=0){
//获取tmp里面每一位数字
int ge=tmp1%10;
//再去掉右边的那位数字
tmp1 =tmp1/10;
//把当前获取到的个位添加到数组当中
arr[index]=ge;
index--;
}
//2.加密
//每位数+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--) {
int tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
//3.把数组中每一个数进行拼接变成加密之后的结果
int result=0;
for (int i = 0; i < arr.length; i++) {
result=result*10+arr[i];
}
System.out.println(result);
}
}
运行结果:
解密:
import java.util.Scanner;
public class Test25 {
public static void main(String[] args) {
//解密:反转-> ???->-5
//???需要根据+5来看,是有范围的最小5,最大14,所以“???”这里5-9不变,0到4要加10
//1.定义数组记录加密之后的结果
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
//定义一个临时变量记录num的值
int tmp1=num;
//定义一个变量进行统计
int count=0;
while(num!=0){
num=num/10;
count++;
}
//②定义数组
int[] arr=new int[count];
//③把整数每一位放到数组中
//定义索引
int index=arr.length-1;
while(tmp1!=0){
//获取tmp里面每一位数字
int ge=tmp1%10;
//再去掉右边的那位数字
tmp1 =tmp1/10;
//把当前获取到的个位添加到数组当中
arr[index]=ge;
index--;
}
//2.反转
for (int i = 0,j=arr.length-1; i < j; i++,j--) {
int tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
//3.由于加密是%10,所以解密0-4之间+10,5-9之间不变
for (int i = 0; i < arr.length; i++) {
if(arr[i]>=0&&arr[i]<=4){
arr[i]=arr[i]+10;
}
}
//4.每一位-5
for (int i = 0; i < arr.length; i++) {
arr[i]=arr[i]-5;
}
//5.获取数组中的每个数字拼成密码
int result=0;
for (int i = 0; i < arr.length; i++) {
result=result*10+arr[i];
}
System.out.println(result);
}
}
运行结果: