您的位置:首页 > 编程语言 > Java开发

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

2015-07-15 22:02 633 查看

问题描述:某个公司采用公用电话传递数据信息,数据是小于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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: