某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来。
程序是我自己写的,大家也看看- /*
- 分析:
- 1234567
-
- 倒序:7654321
- 规则:2109876
- 交换:6109872
- 123456
- 倒序:654321
- 规则:109876
- 交换:609871
- */
- class JiaMi
- {
- private static int index=0;//定义一个索引,记录数组中的有效位数。
- public static void main(String[] args)
- {
- int[] arr=new int[8];
- int num=1234567;
- sop(desc(num,arr)); //把int类型转化为int[]数组类型,并倒序;
- sop(add(arr)); //每位加5,并得出除10的余数,并输出到屏幕。
- sop(remove(arr,0,index-1));//交换第一位和第八位数的位置。并输出到屏幕。
- int sum=arrayToNum(arr,num);//将数组转换成int类型的数字。
- System.out.println(sum);//输出。
- }
- protected static int[] desc(int num,int[] arr)
- {
- //将num转换成数组,且倒序,并用arr接收。
- while(num>0)
- {
- arr[index]=num%10;
- index++;
- num/=10;
- }
- return arr;
- }
- protected static int[] add(int[] arr)
- {
- //加密规则
- for(int i=0;i<index;i++)
- {
- arr[i]=(arr[i]+5)%10;
- }
- return arr;
- }
- protected static void sop(int[] arr)
- {
- //输出数组的有效位
- for(int i=0;i<index;i++)
- {
- System.out.print(arr[i]+" ");
- }
- System.out.println();
- }
- protected static int[] remove(int[] arr,int m,int n)
- {
- //加密规则,首位和末位交换位置。
- int temp=0;
- temp=arr[m];
- arr[m]=arr[n];
- arr[n]=temp;
- return arr;
- }
- protected static int arrayToNum(int[] arr,int num)
- {
- //将arr转换为int类型的数字,并用num接收。
- int sum=0;
- for(int i=0;i<index;i++)
- {
- sum+=arr[i]*Math.pow(10,index-1-i);
-
-
- }
- return num=sum;
- }
- }
复制代码 |
|