需求:
某系统的数字密码采用加密方式进行传输,规则如下:先得到每位数,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新数。
分析:
1.将每位数据存入到数组中去,遍历数组每位数据按照规则进行更改,把更改后的数据从新存入到数组中去;
2.将数组的前后元素进行交换,数组中的最终元素就是加密后的结果。
主要内容:
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)
printArray(arr);
4.核心逻辑(对数组中的数据进行加密) arr = [1, 9, 9, 8]
for (int i = 0; i < arr.length; i++) {
arr[i] = (arr[i] + 6) % 10;
}
5.核心逻辑(对数组中加密的数据进行反转)
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
//直接交换二者位置的值即可
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
6.调用自定义方法printArray输出最后的结果
printArray(arr);
自定义方法printArray
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("]");
}
完整代码:
import java.util.Scanner;
public class Demo6 {
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, 9, 8]
for (int i = 0; i < arr.length; i++) {
arr[i] = (arr[i] + 6) % 10;
}
//5.核心逻辑(对数组中加密的数据进行反转)
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
//直接交换二者位置的值即可
int temp = arr[i];
arr[i] = arr[j];
arr[j] = 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("]");
}
}