某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,
在传递过程中需要加密,加密规则如下:
首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,
然后,把加密后的结果在控制台打印出来。
题目要求解析:
A:数据是小于8位的整数
定义一个int类型的数据
int number = 123456;
B:加密规则
a:首先将数据倒序
结果 654321
b:然后将每位数字都加上5,再用和除以10的余数代替该数字
结果 109876
c:最后将第一位和最后一位数字交换
结果 609871
C:把加密后的结果输出在控制台
通过简单的分析,我们知道如果我们有办法把这个数据变成数组就好了。
不是直接写成这个样子的:
int[] arr = {1,2,3,4,5,6};
抽象方法一:
ge = num%10; //6
shi = num%100/10; //5
bai = num%1000/100; //4
qian = num%10000/1000; //3
wan = num%100000/10000; //2
shiwan = num%100000/100000; //1
我是用第一个抽象做的
抽象方法二:
//把数据中每一位上的数据获取到后存储到数组中
int index = 0;
arr[index] = number%10; //arr[0]=6;
index++;
arr[index] = number/10%10; //arr[1]=5;
index++;
arr[index] = mumber/10/10%10; //arr[2]=4;
while(number > 0) { //number=123456,number=12345,number=1234,number=123,number=12,number=1,number=0
//arr[0]=6,arr[1]=5,arr[2]=4,arr[3]=3,arr[4]=2,arr[5]=1
arr[index] = number%10;
//index=1,index=2,index=3,index=4,index=5,index=6
index++;
//number=12345,number=1234,number=123,number=12,number=1,number=0
number/=10;
}
class EncodeDemo {
public static void main(String[] args){
int num = 123456;
int[] arr = new int[1];
int index = 0;
int t = 10;
int n = 0;
do{
n = num%t/(t/10);
arr[index] = n;
t = t*10;
index++;
arr = addLengthArray(arr);
}while(n != 0);
for(int x=0; x<index; x++) {
arr[x] += 5;
arr[x] %= 10;
}
int temp = arr[0];
arr[0] = arr[index-1];
arr[index-1] = temp;
for(int x=0; x<index; x++) {
System.out.print(arr[x]);
}
System.out.println();
}
public static int[] addLengthArray(int[] array){
int[] newArray = new int [array.length+1];
System.arraycopy(array,0,newArray,0,array.length);
return newArray;
}
}