- /**
- 需求 : 模拟密码加密
- 键盘录入6个数的int类型的密码
- 存入数组中 然后反转,//数组的反转
- 反转后的数组 角标为奇数的互相换 1 和3换 3和 5换 以此类推
- 然后数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
- 打印出来 就欧了 密码是[1,2,3,4,5,6]的话 答案是[6, 5, 4, 1, 2, 3]
- */
- import java.util.Scanner;
- class PasswordImitation
- {
- public static void main(String[] args)
- {
- int[] arr = new int[6];
- getNum(arr);
- reverseArray(arr);
- swapJi(arr);
- swapFirstLast(arr);
- printArray(arr);
- }
- //循环录入6个整数
- public static void getNum(int[] arr)
- {
- Scanner sc = new Scanner(System.in);
- int num;
- for (int i = 0; i < arr.length; i++)
- {
- System.out.println("请依次输入6位整数密码!");
- System.out.println("请输入第" + i + "位整数,并按Enter确定:");
- num = sc.nextInt();
-
- if (num%10 == num)
- {
- arr[i] = num;
- }
- else
- {
- for (; ; )
- {
- System.out.println("您刚才输入的整数不合法!");
- System.out.println("请重新输入第" + i + "位整数:");
- num = sc.nextInt();
- if (num%10 == num)
- {
- arr[i] = num;
- break;
- }
- else
- {
- continue;
- }
- }
- }
-
- }
- }
-
- //数组反转
- public static void reverseArray(int[] arr)
- {
- for (int i = 0; i < arr.length/2; i++)
- {
- swap(arr,i,arr.length-1-i);
- }
- }
- //数组奇数角标数据换位
- public static void swapJi(int[] arr)
- {
- for (int i = 1; i < arr.length-2; i += 2)
- {
- swap(arr,i,i+2);
- }
- }
-
- //交换第一个奇数角标和最后一个奇数角标的数据位置
- public static void swapFirstLast(int[] arr)
- {
- if (arr.length%2 == 0)
- {
- swap(arr,1,arr.length-1);
- }
- else
- {
- swap(arr,1,arr.length-2);
- }
- }
- //打印数组
- public static void printArray(int[] arr)
- {
- System.out.print("[");
- for (int i = 0; i < arr.length; i++)
- {
- if (i == arr.length-1)
- {
- System.out.print(arr[i] + "]");
- }
- else
- {
- System.out.print(arr[i] + ",");
- }
- }
- }
- //交换位置
- public static void swap(int[] arr,int x,int y)
- {
- int temp = arr[x];
- arr[x] = arr[y];
- arr[y] = temp;
- }
- }
复制代码 |