java到底如何实现元素反转则呢?下面用一个具体实例来说明
package com.ssj.demo;
import java.util.Scanner;
public class Test07 {
//需求:某系统的数字密码:比如1983,采用数字加密方式传输,规则如下:先得到每位数都加上5
//再对10求余,最后将所有数字反转,得到一串新数。
public static void main(String[] args) {
//1.动态初始化一个根据输入数字位数决定长度的数组
System.out.println("请输入你的初始密码位数:");
Scanner sc = new Scanner(System.in);
int[] arr = new int[sc.nextInt()];
//2.将输入的数字存入数组中
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i + 1) + "位密码:");
arr[i] = sc.nextInt();
}
//3.看一下数组
// printArray(arr);
//4.数组中数据加密
for (int i = 0; i < arr.length; i++) {
arr[i] = (arr[i] + 5) % 10;
}
// printArray(arr);
//5.对加密后的数据进行反转
for (int i = 0, j = arr.length - 1; 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) {
for (int i = 0; i < arr.length; i++) {
System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ",");
}
}
}
通过以上实例不难看出,核心逻辑是定义两个变量分别占据数组首尾2个位置,一个往前走,一个往后走,同步交换双方位置处的值。
例如交换数组[1,2,3,4]中的元素
package com.ssj.demo;
public class Test08 {
//数组中元素交换
public static void main(String[] args) {
int[]arr={1,2,3,4};//静态初始化一个数组
//元素交换核心逻辑
for (int i=0,j=arr.length-1;i<j;i++,j--){
int temp =arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
//遍历并打印交换元素后的数组
System.out.print("[");
for (int i=0;i<arr.length;i++){
System.out.print(i==arr.length-1?arr[i]:arr[i]+",");
}
System.out.print("]");
}
}