练习:请将加密后的数据解密出来

题目:

请将加密后的数据解密出来。某系统的数字密码(大于 0)。比如 1983,采用加密方式进行传输。

规则如下:

每位数加上 5;再对 10 求余;最后将所有数字反转得到一串新数。

按照以上规则进行解密:

比如 1983 加密之后变成 8346;解密之后变成 1983。

代码:

//请将加密后的数据解密出来
package demo01;
import java.util.Scanner;
public class HelloJava {
    public static void main(String[] args) {
    	//输入需要解密的整数:
    	Scanner sc = new Scanner(System.in);
    	System.out.println("请输入一个大于 0 的整数:");
    	int number = sc.nextInt();
    	sc.close();
    	if(number > 0) {
    		//将 number 的值赋值给 copyNumber 方便后续使用:
        	int copyNumber = number;
        	//计算 number 有多少位:
        	int count = 0;
        	while(number != 0) {
        		number /= 10;
        		count++;
        	}
        	//定义数组用于存放 number 的各位数:
        	int[] array = new int[count];
        	int index = array.length - 1;
        	while(copyNumber != 0) {
        		int ge = copyNumber % 10;
        		copyNumber /= 10;
        		array[index] = ge;
        		index--;
        	}
        	//反转数组里面的数:
        	for(int i = 0, j = array.length - 1; i < j; i++, j--) {
        		int temp = array[i];
        		array[i] = array[j];
        		array[j] = temp;
        	}
        	//各位数如果大于等于 0 并且小于等于 4 则进行 +10 处理;其余各位数(大于等于 5 并且小于等于 9)不变:
        	for(int i = 0; i < array.length; i++) {
        		if(array[i] >= 0 && array[i] <= 4) {
        			array[i] += 10;
        		}
        	}
        	//将各位数 -5:
        	for(int i = 0; i < array.length; i++) {
        		array[i] -= 5;
        	}
        	//打印解密后的结果:
        	int result = 0;
        	for(int i = 0; i < array.length; i++) {
        		result = result * 10 + array[i];
        	}
        	System.out.println("解密后的数字为:" + result);
    	}else {
    		System.out.println("您输入的数字不合法!");
    	}
    }
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扶光与望舒呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值