|
发表于 2023-12-3 21:53:50
|
显示全部楼层
本楼为最佳答案
以下是一个基于Java语言的编程示例,实现了上述要求:
通用矩阵类 Matrix:
方阵类 SquareMatrix:
- public class SquareMatrix extends Matrix {
- // 调用父类构造方法
- public SquareMatrix(int n) {
- super(n, n);
- }
- // 求主对角线和的方法
- public double sumOfMainDiagonal() {
- double sum = 0;
- for (int i = 0; i < getRows(); i++) {
- sum += super.data[i][i];
- }
- return sum;
- }
- }
复制代码
矩阵维度不匹配时的自定义异常类 MatrixDimensionMismatchException:
- public class MatrixDimensionMismatchException extends Exception {
- public MatrixDimensionMismatchException(Matrix matrix1, Matrix matrix2) {
- super("Matrix dimension mismatch: (" + matrix1.getRows() + "x" + matrix1.getCols()
- + ") and (" + matrix2.getRows() + "x" + matrix2.getCols() + ")");
- }
- }
复制代码
测试类 Main:
- public class Main {
- public static void main(String[] args) {
- Matrix matrix1 = new Matrix(new double[][]{{1, 2}, {3, 4}});
- Matrix matrix2 = new Matrix(new double[][]{{5, 6}, {7, 8}});
- try {
- System.out.println("Matrix1:");
- System.out.println(matrix1);
- System.out.println("Matrix2:");
- System.out.println(matrix2);
- System.out.println("Matrix1 + Matrix2:");
- System.out.println(matrix1.add(matrix2));
- System.out.println("Matrix1 * Matrix2:");
- System.out.println(matrix1.multiply(matrix2));
- System.out.println("Transpose of Matrix1:");
- System.out.println(matrix1.transpose());
- System.out.println("Matrix1 / 2:");
- System.out.println(matrix1.divide(2));
- System.out.println("Column 1 of Matrix1:");
- System.out.println(matrix1.getColumn(0));
- System.out.println("Row 0 of Matrix1:");
- System.out.println(matrix1.getRow(0));
- SquareMatrix squareMatrix = new SquareMatrix(3);
- System.out.println("SquareMatrix:");
- System.out.println(squareMatrix);
- System.out.println("Sum of main diagonal of SquareMatrix:");
- System.out.println(squareMatrix.sumOfMainDiagonal());
- } catch (MatrixDimensionMismatchException e) {
- System.out.println(e.getMessage());
- } catch (IndexOutOfBoundsException e) {
- System.out.println(e.getMessage());
- }
- }
- }
复制代码
上述代码中创建了一个通用矩阵类 Matrix 和一个方阵类 SquareMatrix,以及一个自定义异常类 MatrixDimensionMismatchException。测试类 Main 中展示了如何使用这些类进行矩阵相关操作,并处理可能抛出的异常。
请根据实际需求修改代码,例如添加其他所需的方法或属性,适配不同的问题场景。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 |
|