输入一个N*N的矩阵,得到这个矩阵的顺时针旋转90度的矩阵。
代码如下:
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String str = input.nextLine(); String[] strArr = str.split(" "); int[][] matrix = new int[strArr.length][strArr.length]; int N = strArr.length; for(int i = 0;i<strArr.length;i++){ matrix[0][i] = Integer.valueOf(strArr[i]); } for(int i = 0;i<N*(N-1);i++){ matrix[i/N+1][i%N] = input.nextInt(); } int res[][] = rotate(matrix); for(int i = 0;i<N ;i++){ for(int j=0;j<N;j++){ if(j==(N-1)){ System.out.print(res[i][j]); System.out.println(); }else{ System.out.print(res[i][j]+" "); } } } } public static int[][] rotate(int[][] matrix) { int n = matrix.length; int limit = (n-1)/2; for(int i=0;i<= limit; i++){ for(int j=i;j<n-1-i;j++){ int temp = matrix[i][j]; matrix[i][j] = matrix[n-1-j][i]; matrix[n-1-j][i] = matrix[n-1-i][n-1-j]; matrix[n-1-i][n-1-j] = matrix[j][n-1-i]; matrix[j][n-1-i] = temp; } } return matrix; } }
有一个问题时不知道如何判断java输入什么时候结束。这里是N*N的矩阵,所以根据第一行的输入可以判断矩阵的阶数,进而知道矩阵输入什么时候结束,如果N*M的矩阵就没辙了。