任务描述
本关任务: 输入9个整数,按3行3列的格式存入二维数组ma,按矩阵的格式输出数组ma;计算矩阵ma的转置矩阵mb;按矩阵的格式输出数组mb。
相关知识
为了完成本关任务,你需要掌握:1. 数组的创建,2.如何遍历数组,3.如何求转置矩阵。
本题思路为: (以2*3的矩阵为例) 设矩阵a和b分别用二维数组a[2][3] 和b[3][2]表示,则任务实现的步骤如下。 (1)输入2行3列的6个数据,分别存入数组a中,可用双重循环实现; (2)计算转置矩阵:分析数组a中的每个元素a[i][j]应该赋给数组b中的哪个元素?
a[0][0] --> b[0][0] a[0][1] --> b[1][0] a[0][2] --> b[2][0] a[1][0] --> b[0][1] a[1][1] --> b[1][1] a[1][2] --> b[2][1] 分析规律:对于每个数组元素a[i][j],应该放到数组b中的元素b[j][i]的位置。 然后用双重循环遍历数组a,将每个元素赋给b中的对应元素即可。 (3)输出数组b的元素,按行输出,即为矩阵的样式。可用双重循环实现遍历数组b,将每个元素输出。注意输出一行后要换行。
编程要求
根据提示,在右侧编辑器补充代码 。
测试说明
平台会对你编写的代码进行测试:
测试输入:1 2 3 4 5 6 7 8 9 ; 预期输出: 原始矩阵 1 2 3 4 5 6 7 8 9 转置后的矩阵 1 4 7 2 5 8 3 6 9
开始你的任务吧,祝你成功!
import java.util.Scanner;
public class ExchangeMatrix {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取数据填充二维数组ma
int[][] ma = new int[3][3];
System.out.println("原始矩阵");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
ma[i][j] = scanner.nextInt();
}
}
// 输出原始矩阵
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.printf("%5d", ma[i][j]);
}
System.out.println();
}
// 计算转置矩阵mb
int[][] mb = new int[3][3];
System.out.println("转置后的矩阵");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
mb[j][i] = ma[i][j];
}
}
// 输出转置矩阵
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.printf("%5d", mb[i][j]);
}
System.out.println();
}
}
}