java 基础编程练习1

题目描述:
KiKi有一个矩阵,他想知道经过k次行变换或列变换后得到的矩阵。请编程帮他解答。

输入描述:
第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)

从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。
接下来一行输入k,表示要执行k次操作(1≤k≤5)。接下来有k行,每行包括一个字符t和两个数a和b,中间用空格格分隔,t代表需要执行的操作,当t为字符’r’时代表进行行变换,当t为字符’c’时代表进行列变换,a和b为需要互换的行或列(1≤a≤b≤n≤10,1≤a≤b≤m≤10)。

输出描述:
输出n行m列,为矩阵交换后的结果。每个数后面有一个空格。

示例1
输入:

2 2
1 2
3 4
1
r 1 2

输出:

3 4
1 2

import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        //输入原始二维矩阵
        int n = in.nextInt();
        int m = in.nextInt();
        int[][] rec = new int[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                rec[i][j] = in.nextInt();
            }
        }
		//这里开始输入要求,k是要进行k次操作
        int k = in.nextInt();
        for (int x = 0; x < k; x++) {
            String c = in.next();
            int a = in.nextInt()-1;//记得减1,因为数组下标是从0开始的
            int b = in.nextInt()-1;
			//r是行变换;c是列变换
            switch (c) {
                case "r"://行变换,就是将对应行上元素,依次交换
                    for (int i = 0; i < m; i++) {
                        int temp = rec[a][i];
                        rec[a][i] = rec[b][i];
                        rec[b][i] = temp;
                    }
                    break;
                    
                case "c"://与行交换同理
                    for (int i = 0; i < n; i++) {
                        int temp = rec[i][a];
                        rec[i][a] = rec[i][b];
                        rec[i][b] = temp;
                    }
                    break;
            }
        }
        //最后输出矩阵
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                System.out.print(rec[i][j] + " ");
            }
            System.out.println();
        }
    }
}