分享一个小程序
某个人使用公共电话传递密码,为了保证安全,传递的时候进行加密
加密规则如下:
先把数据倒序
然后给密码中的每个数字加5,再用除以10的余数代替该数字
最后再把第一个数字和最后一个数字交换位置。
这个密码是一个小于8位的整数。请编写代码,通过键盘输入一个密码
返回加密后的结果。
先来一波俺的分析
我们先分析一下这个题目,他这里说到了三个要求,第一个数据倒序,第二个加五取余十,第三个是头尾交换。
那我们可以看出来,在代码主体肯定要有三个小代码块来实现这三个功能。首先我们来写一写第一个–将数据倒序:
对于我来说,在目前的java学习过程中可能能想到的数据倒序也就是数组倒序了。但我们所要加密的密码是一个不大于8位的整数,也就是说我们并没有可以拿来进行倒序的数组。
怎么办呢?我的办法是设置一个数组,并且将我们得到的密码的个位、十位、百位…等各个数位的数字提取出来让他存入数组中,同时,我们还可以顺便将倒序工作给完成了!
int[] arr = new int[noc];//设置新的数组,noc为number of code,指密码的数字数量
int temp;
for(int i=0;i<noc;i++) {
temp=code%10;//这里取余,得到个位上的数
arr[i] = temp;//接着把密码的最后一位--个位上的数塞到数组的第一位里
code=code/10;//然后除个十就可以把个位给删掉啦
}
这样的话,我们就可以成功地将密码的每一位数字塞到我们的数组里了。细心的你们可能发现了,我在做这一步的时候,已经完成了倒序操作,因为个位作为密码的最后一位,我将它存入了数组的第一位,后面的循环也在进行同样的过程,使得我们成功的完成了第一个要求。
相较于第一个要求,第二个要求就相对简单了,还是熟悉的循环操作,然后我们将数组的每一位都提出来进行数字转换。