package com.itheima.demo;
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
// 需求:数据加密
// 1.定义一个数据存入需要加密的数据
System.out.println("请您输入要加密的个数:"); // 自动定义动态数组的个数
Scanner sc = new Scanner(System.in);
int lenght = sc.nextInt();
int[] arr = new int[lenght]; // 这等于是让用于自己输入需要加密的个数
// 2.录入需要加密的数字
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入要加密的数字:");
// arr[i] = sc.nextInt(); // 一般用让用户输入东西,最好用一个变量接收:sc.nextInt得到的是数值类型,用变量接收
int number = sc.nextInt();
arr[i] = number; // 将每次录入的数字都赋值给数组
}
// 3. 打印数组
System.out.println("未加密前:");
printArray(arr);
// 4.核心逻辑:(对数组中加密的数据进行加密) (采用每个元素先+5, 然后对10求余) 假设原来的数组是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];
// i j
for (int i = 0, j = arr.length - 1; i < j; i++ , j--) { // 这是将数组的元素反转,i初始索引为0,j为最后一个元素(arr.length-1)
// i的索引不断增加,j不断想减,当i == j时就不反转
// 判断条件则是要i < j
// 将遍历的元素进行调换
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
System.out.println("加密后: ");
// 再次调用方法是把最新的加密数字打印出来
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] + ",");
// 这里是用了三元运算符,如果索引i是最后一个元素(arr.length)就输出arr[i],如果不是,就每个arr[i]后面加“,”
}
System.out.println("]");
}
}