需求:
- 某系统的数字密码:比如1983,采用加密方式进行传输,规则如下:先得到每位数,然后每位数都加上5.再对10求余,最后将所有数字反转,得到一串新数。
例如:
分析:
- 将每位数据存入到数组中去,遍历数组每位数据按照规则进行更改,把更改后的数据重新存入到数组中去。
- 将数组的前后元素进行交换,数组中的最终元素就是加密后的结果。
演示代码如下:
public class Test6 { public static void main(String[] args) { //需求:数据加密 //1.定义一个数组存入需要加密的数据 System.out.println("请输入需要加密的数字个数捏~"); Scanner sc = new Scanner(System.in); int length = sc.nextInt(); int[] arr = new int[length]; //2.录入需要加密的文字 for (int i = 0; i < arr.length; i++) { System.out.println("请输入加密的第" +(i + 1) + "个数字捏~"); int number = sc.nextInt(); arr[i] = number; } //3.打印数组内容看一下 printArray(arr); //4.核心逻辑(对数组中的数据进行加密) arr = [1, 9, 8, 3] for (int i = 0; i < arr.length; i++) { arr[i] = (arr[i] + 5) % 10; } //5.核心逻辑(对数组中加密的数据进行反转,才是最终加密的结果) arr = [6, 4, 3, 8] for (int i = 0,j = arr.length - 1; i < j; i++,j--) { int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } printArray(arr);//输出最终的加密后的密码 } public static void printArray(int[] arr){ System.out.print("["); for (int i = 0; i < arr.length; i++) { System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ","); } System.out.println("]"); } }
本次案例中是如何完成数组元素的反转的?
- 定义2个变量分别占数组的首尾位置。
- 一个变量往前走,一个变量往后走,同步交换双方位置处的值。