黑马程序员技术交流社区
标题:
java基础班老师出的加密题
[打印本页]
作者:
KaiM
时间:
2013-6-27 15:43
标题:
java基础班老师出的加密题
某个公司采用公用电话传递数据信息,数据是小于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;
}
}
复制代码
作者:
HM张博文
时间:
2013-6-27 15:55
有点意思哦,我收藏了,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2