一维数组:
向右:
int[] numbers = { 1, 2, 3, 4, 5, 6 };
// 外层循环:控制旋转的位数,循环3次代表旋转3位
try (Scanner input = new Scanner(System.in)) {
int w = input.nextInt();
for (int i = 0; i < w; i++) {
// 内层循环:控制旋转的方向,每次向右旋转1位
// 向右旋转:将尾元素通过不断交换,交换至数组头部
// 遍历的方向:从尾部开始(逆序)
// 交换的双方:当前元素k与前一个元素k+1
for (int k = numbers.length - 1; k > 0; k--) {
numbers[k] = numbers[k] ^ numbers[k - 1];
numbers[k - 1] = numbers[k] ^ numbers[k - 1];
numbers[k] = numbers[k] ^ numbers[k - 1];
}
}
System.out.println(Arrays.toString(numbers));
}
向左:
int[] numbers = { 1, 2, 3, 4, 5, 6 };
// 外层循环:控制旋转的位数,循环3次代表旋转3位
try (Scanner input = new Scanner(System.in)) {
int w = input.nextInt();
for (int i = 0; i < w; i++) {
// 内层循环:控制旋转的方向,每次向左旋转1位
// 向左旋转:将头元素通过不断交换,交换至数组尾部
// 遍历的方向:从头部开始(顺序)
// 交换的双方:当前元素k与后一个元素k+1
for (int k = 0; k < numbers.length; k++) {
numbers[k] = numbers[k] ^ numbers[k + 1];
numbers[k + 1] = numbers[k] ^ numbers[k + 1];
numbers[k] = numbers[k] ^ numbers[k + 1];
}
}
System.out.println(Arrays.toString(numbers));
}
二维数组
旋转90°
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();//行数
int m=input.nextInt();//列数
int[][] num=new int[n][m];
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
num[i][j]=input.nextInt();
}
}
System.out.println(Arrays.deepToString(num));
//旋转数组
for(int i=0;i<m;i++) {
for(int j=n-1;j>=0;j--) {
System.out.print(num[j][i]);
}
System.out.println();
}
}