import java.util.Scanner;
class Test6_Array {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数组中的第一个整数");
int a1 = sc.nextInt();
System.out.println("请输入数组中的第二个整数");
int a2 = sc.nextInt();
System.out.println("请输入数组中的第三个整数");
int a3 = sc.nextInt();
System.out.println("请输入数组中的第四个整数");
int a4 = sc.nextInt();
System.out.println("请输入数组中的第五个整数");
int a5 = sc.nextInt();
System.out.println("请输入数组中的第六个整数");
int a6 = sc.nextInt();
int[] arr = {a1,a2,a3,a4,a5,a6};
reseverArray1(arr);
reseverArray2(arr);
print(arr);
}
//将数组中的元素反转
public static void reseverArray1(int[] arr) {
for (int i=0;i<arr.length/2 ;i++ ) {
int temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
}
/*
如果输入int[] arr={1,2,3,4,5,6};
那么反转后[]arr={6,5,4,3,2,1};
第一次{6,3,4,5,2,1}
第二次{6,3,4,1,2,5}
第三次{6,5,3,1,2,3}
有几个奇数,交换几次;
奇数的个数为arr.length/2
因为角标的初始值有0,所以交换次数为arr.length/2
*/
public static void reseverArray2(int[] arr) {
//先从小向大交换
if (arr.length>4) { //若arr.length<4则标号只有一个奇数
for (int i=1;i<=arr.length/2-1 ;i++ ) {//交换次数
int temp=arr[2*i-1];
arr[2*i-1]=arr[2*i+1];
arr[2*i+1]=temp;
}
if (arr.length%2==0) {
int temp=arr[arr.length-1];
arr[arr.length-1]=arr[1];
arr[1]=temp;
}else {
int temp1=arr[arr.length-2];
arr[arr.length-2]=arr[1];
arr[1]=temp1;
}
}
}
public static void print(int[] arr) {
for (int i = 0;i<arr.length ;i++ ) {
System.out.print(arr[i]);
}
}
} |