需求:
某系统的数字密码(大于0) 比如1983,采用加密方式进行传输
规则如下:
每位数加上5
再对10求余
最后将所有数字反转得到一串新数。
加密:
思路:
1.把整数里面的每一位放到数组中
2.加密
3.把数组里面的每一个数字进行拼接,变成加密之后的结果
代码实现:
import java.util.Scanner public class Test6 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入密码:"); int number = sc.nextInt(); int temp=number; int count=0; while(number!=0){ number=number/10; count++; } int[] arr=new int[count]; for (int i = (count-1); i >=0; i--) { arr[i]=temp%10; temp=temp/10; } for (int i = 0; i < count; i++) { arr[i]+=5; } for (int i = 0; i < count; i++) { arr[i]=arr[i]%10; } for (int i = 0,j=(count-1); i < j; i++,j--) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } for (int i = 0; i < count; i++) { System.out.print(arr[i]); } } }
|
难点:
第一步.将一个整数转入数组、
1.利用取余、取模获取和删除最右边的数字
2.定义一个变量作为计数器,删除数字的次数就是数字的位数即需要定义的数组长
解密:

如图所示,反转加密的过程。
难点:
由于加密是对10取余的方式进行获取的,因此解密的时候需要进行判断,04之间加10,59之间不变
代码实现:
import java.util.Scanner; public class Test7 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int number=sc.nextInt(); int temp=number; int count=0; while(number!=0){ number=number/10; count++; } int[] arr=new int[count]; for (int i = (count-1); i >=0 ; i--) { arr[i]=temp%10; temp=temp/10; } for (int i = 0,j=(count-1); i < j ; i++,j--) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } for (int i = 0; i < count; i++) { if(arr[i]>=0&&arr[i]<=4){ arr[i]+=10; } } for (int i = 0; i < count; i++) { arr[i]-=5; } for (int i = 0; i < count; i++) { System.out.print(arr[i]); } } }
|