1. package com.itheima.demo;
    2. import java.util.Scanner;
    3. public class Test6 {
    4. public static void main(String[] args) {
    5. // 需求:数据加密
    6. // 1.定义一个数据存入需要加密的数据
    7. System.out.println("请您输入要加密的个数:"); // 自动定义动态数组的个数
    8. Scanner sc = new Scanner(System.in);
    9. int lenght = sc.nextInt();
    10. int[] arr = new int[lenght]; // 这等于是让用于自己输入需要加密的个数
    11. // 2.录入需要加密的数字
    12. for (int i = 0; i < arr.length; i++) {
    13. System.out.println("请输入要加密的数字:");
    14. // arr[i] = sc.nextInt(); // 一般用让用户输入东西,最好用一个变量接收:sc.nextInt得到的是数值类型,用变量接收
    15. int number = sc.nextInt();
    16. arr[i] = number; // 将每次录入的数字都赋值给数组
    17. }
    18. // 3. 打印数组
    19. System.out.println("未加密前:");
    20. printArray(arr);
    21. // 4.核心逻辑:(对数组中加密的数据进行加密) (采用每个元素先+5, 然后对10求余) 假设原来的数组是arr = [1,9,8,3]
    22. for (int i = 0; i < arr.length; i++) {
    23. arr[i] = (arr[i] + 5) % 10; // 将每个数组进行特定的加密操作然后赋值给数组元素,刷新
    24. }
    25. // 5.核心逻辑:对数组中加密的数据进行反转,才是最终加密的结果 arr = [6,4,3,8];
    26. // i j
    27. for (int i = 0, j = arr.length - 1; i < j; i++ , j--) { // 这是将数组的元素反转,i初始索引为0,j为最后一个元素(arr.length-1)
    28. // i的索引不断增加,j不断想减,当i == j时就不反转
    29. // 判断条件则是要i < j
    30. // 将遍历的元素进行调换
    31. int temp = arr[i];
    32. arr[i] = arr[j];
    33. arr[j] = temp;
    34. }
    35. System.out.println("加密后: ");
    36. // 再次调用方法是把最新的加密数字打印出来
    37. printArray(arr);
    38. }
    39. // 定义一个方法,将录入的数字打印出来
    40. public static void printArray(int[] arr){
    41. System.out.print("[");
    42. for (int i = 0; i < arr.length; i++) {
    43. System.out.print(i == arr.length -1 ? arr[i]: arr[i] + ",");
    44. // 这里是用了三元运算符,如果索引i是最后一个元素(arr.length)就输出arr[i],如果不是,就每个arr[i]后面加“,”
    45. }
    46. System.out.println("]");
    47. }
    48. }