Java语言基础1--综合案例(数字加密问题):

来源:互联网 发布:mac os 10.9.5 iso 编辑:程序博客网 时间:2024/05/21 04:26

问题描述:某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密。加密规则如下:首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来。


最终代码如下(详细的需求分析、编码实现过程)

/*    1、问题描述:        某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密。        加密规则如下:首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,        最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来。     2、获取需求:        实现将用户输入的小于8位正整数字,按照给定的规则加密,并打印出来    3、分析:        (1)获取给定的不小于8位的整数        (2)分析主要规定的规则:            a、原始数据倒序            b、将每一个数字加上5            c、和与10取余代替当前数字            d、首尾数字交换        (3)将所得加密后的数字打印    4、实现:        数据结构:采用一维数组,长度为8        规则实现:        a、原始数据倒序            拆数:获取各个位置上的数字                拆数过程中从个位数字开始获取,存储从数组的0索引开始,                已经实现了数组的逆置            逆置数组(reverse函数)        b、将每一个数字加上5            一维数组的遍历:for循环            num += 5;        c、和与10取余代替当前数字            num %= 10;                  d、首尾数字交换            实现正整数交换的四种方式            (1)中间变量temp            (2)不借助中间变量(+)            (3)使用按位异或的特点:                某一数据和同一数据异或两次,数据本身不变            (4)一句话实现:                b = (a+b) -(a=b); 可读性很差且代码不规范    5、编码*/import java.util.Scanner;public class JiaMiDemo{    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        System.out.println("请输入原始数据:");        // 1、获取原始数据        int data = sc.nextInt();/*        // 2、定义数据结构:一维数组        int[] dataArray = new int[8];        int count = 0;   // 记录索引位置(数组的实际长度)        // 3、原始数据倒序        //      拆数:获取各个位置上的数字        //          拆数过程中从个位数字开始获取,存储从数组的0索引开始,        //          已经实现了数组的逆置        //      逆置数组(reverse函数)        while(data!=0)        {            dataArray[count] = data % 10;            count ++;            data /= 10;        }*/        // 拆数函数实现2、3        int[] dataArray = chaiShu(data);        // 获取数组的实际长度        int count = dataArray[8];        /* 4、将每一个数字加上5                一维数组的遍历:for循环           5、和与10取余代替当前数字        */        for(int i=0;i<count;i++)        {            dataArray[i] += 5;            dataArray[i] %= 10;        }        // 6、首尾数字交换        int temp = dataArray[0];        dataArray[0] = dataArray[count-1];        dataArray[count-1] = temp;        // 7、实现加密数据的输出        String jiami="";        for (int i=0;i<count;i++)        {            jiami += dataArray[i];        }        System.out.println("加密后的数据是:\n"+ jiami);    }    /* 拆数函数:获取各个位置上的数字        拆数过程中从个位数字开始获取,存储从数组的0索引开始,        已经实现了数组的逆置    */    public static int[] chaiShu(int num)    {        int[] arr = new int[9];        int index = 0;        while(num!=0)        {            arr[index++]=num%10;            num/=10;        }        // 最后一位存储数组的实际长度        arr[8] = index;        return arr;    }}
0 0
原创粉丝点击