Java例题_48 四位数据加密
1 /*48 【程序 48 加密】
2 题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,
3 加密 规则如下:
4 每位数字都加上 5,然后用和除以 10 的余数代替该数字,再将第一位和第四位交 换,第二位和第三位交换。
5
6 ps:这是个什么骚操作。。。。一四交换,二三交换,不就是倒序么。。。。
7 */
8
9 /*分析
10 * 1、从键盘得到一个4位数
11 * 2、将这个4位数送入加密函数中加密
12 * 3、加密后传入主函数,然后输出到屏幕
13 * ===
14 * 加密函数:
15 * 1、将4位数分离后存入数组中
16 * 2、按照要求将每个数字实施加密处理
17 * 3、按要求调换数字的位置
18 * 4、将数组中的4个数字取出转换为一个整数,返回这个值
19 * */
20
21 package homework;
22
23 import java.util.Scanner;
24
25 public class _48 {
26
27 public static void main(String[] args) {
28 //提示输入一个4位整数
29 System.out.println("请输入一个四位数整数:");
30 // 从键盘得到一个4位数
31 Scanner sc=new Scanner(System.in); //new一个监视器,检测系统输入
32 int n=sc.nextInt(); //从键盘得到输入的数
33 //验证输入是否合法
34 while ((n<1000)&(n>9999)) { //验证输入的n是否为一个四位数:
35 System.out.println("输入错误,请重新输入:"); //提示输入错误
36 n=sc.nextInt(); //重新获得新的n值
37 }
38 //输出加密后的结果;
39 System.out.println("加密后的四位数为:"+Encryption(n));
40
41
42 }
43
44 //加密函数
45 private static int Encryption(int n) {
46 //声明一个数组a[]用于存放n的每个数字
47 int[] a=new int[4];
48 //将n拆分后存入数组a中
49 for (int i = 3; i >=0; i--) { //因为确定是4位数,直接从最后一个开始存,避免再来一次倒序
50 a[i]=(n%10+5)%10; //得到每位数字后,+5,再%10,得到加密后的值
51 n=n/10;
52 }
53 //交换一、四位,二、三位
54 // int t; //临时存放数据
55 // t=a[0];
56 // a[0]=a[3];
57 // a[3]=a[0];
58 Swop(a, 0, 3); //交换一、四位
59 Swop(a, 1, 2); //交换二、三位
60 //声明一个x用于存放加密后的四位数
61 int x=0;
62 //转换为一个整型四位数
63 for (int i = 0; i < a.length; i++) {
64 // System.out.println(a[i]); //测试
65 x=x*10+a[i];
66 }
67 return x;
68 }
69
70 //交换位置
71 private static void Swop(int[] a,int i,int j) {
72 int t=a[i];
73 a[i]=a[j];
74 a[j]=t;
75 }
76
77 }