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; } }
相关文章推荐
- java学习&复习 2015/07/15
- java web系统调优方案
- Java基本语法--变量与常量
- 解析Unicode编码和Java char
- 手工制作的年份Java老A发售量
- 【Java】字符串程序
- byte[]和InputStream的相互转换
- Java基础---JVM内存管理以及垃圾回收机制
- struts中如何将前台的值能在action中获取到
- java web 开发乱码总结
- java取反运算
- Java个人习惯用法总结
- SpringMVC入门
- Spring MVC工作流程图
- day01--Java基础语法--Java语言基础
- Java程序与串口的通信实现及调试
- java中生成javadoc文档
- struts.enable.DynamicMethodInvocation = true 动态方法调用
- Jni 简单实战 c调用java静态方法
- java 基础总结