java求任意整数各个数位上的数字并输出(用了数组扩容)

某个公司采用公用电话传递数据信息,数据是小于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++;

//		注释掉的都是测试用的输出语句
//		System.out.println(n);
//		System.out.println("index:"+index);
//		System.out.println("t:"+t);
//		for(int i = 0;i<arr.length;i++){
    
    
//
//			System.out.print(arr[i]+" ,");
//		}
//		System.out.println();

			arr = addLengthArray(arr);

		}while(n != 0);

		//然后将每位数字都加上5,再用和除以10的余数代替该数字
		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();
	}    


	//数组扩容,每次加1个长度
	public static int[] addLengthArray(int[] array){
    
    

		int[] newArray = new int [array.length+1];

        //将array数组从0位置至array.length位置,复制到newArray数组0位置到array.length位置。
        System.arraycopy(array,0,newArray,0,array.length);

		return newArray;
	}
 

}

猜你喜欢

转载自blog.csdn.net/zhuyin6553/article/details/103207615