JAVA 用图形用户界面程序实现矩阵的基本运算。

JAVA
用图形用户界面程序实现矩阵的基本运算。

package Math;

/**
 * 矩阵基本运算
 * @author woyouyihujiu
 *
 */
public class BasicMatrixMath {
    public static final int OPEROPERATION_ADD = 1;
    public static final int OPEROPERATION_SUB = 2;
    public static final int OPEROPERATION_MUL = 3;
    /**
     * 矩阵加法运算
     * @param matrix_a 矩阵a
     * @param matrix_b 矩阵b
     * @return result1 运算合法,返回结果
     */
    public int[][] additive(int[][] matrix_a, int[][] matrix_b){
        int[][] result1 = new int[matrix_a.length][matrix_a[0].length];
        if(legalOperation(matrix_a, matrix_b, OPEROPERATION_ADD)){
            for(int i = 0; i < matrix_a.length; i++){
                for(int j = 0; j < matrix_a[0].length; j++){
                    result1[i][j] = matrix_a[i][j] + matrix_b[i][j];
                }
            }
        }
        return result1;
    }
    /**
     * 矩阵减法运算
     * @param matrix_a 矩阵a
     * @param matrix_b 矩阵b
     * @return result2 运算合法,返回结果
     */
    public int[][] subtraction(int[][] matrix_a, int[][] matrix_b){
        int[][] result2 = new int[matrix_a.length][matrix_a[0].length];
        if(legalOperation(matrix_a, matrix_b, OPEROPERATION_SUB)){
            for(int i = 0; i < matrix_a.length; i++){
                for(int j = 0; j < matrix_a[0].length; j++){
                    result2[i][j] = matrix_a[i][j] - matrix_b[i][j];
                }
            }
        }
        return result2;
    }
    /**
     * 矩阵乘法运算a 矩阵与矩阵相乘
     * @param matrix_a 矩阵a
     * @param matrix_b 矩阵b
     * @return result3 运算合法,返回结果; null 运算不合法
     */
    public int[][] multiplication_a(int[][] matrix_a, int[][] matrix_b){
        int[][] result3 = new int[matrix_a.length][matrix_b[0].length];
        if(legalOperation(matrix_a, matrix_b, OPEROPERATION_MUL)){
            for(int i = 0; i < matrix_a.length; i++){
                for(int j = 0;j < matrix_a[0].length; j++){
                    result3[i][j] = calculateSingleResult(matrix_a, matrix_b, i, j);
                }
            }
            return result3;
        }else{
            return null;
        }
    }
    /**
     * 矩阵乘法运算b 矩阵的数乘
     * @param matrix_a 矩阵a
     * @param n 数n
     * @return result4 运算合法,返回结果
     */
    public int[][] multiplication_b(int[][] matrix_a, int n){
        int[][] result4 = new int[matrix_a.length][matrix_a[0].length];
        for(int i = 0; i < matrix_a.length; i++){
            for(int j = 0; j < matrix_a[0].length; j++){
                result4[i][j] = n * matrix_a[i][j];
            }
        }
        return result4;
    }
    /**
     * 矩阵乘法a中result每个元素的单一运算
     * @param matrix_a 矩阵a
     * @param matrix_b 矩阵b
     * @param row 参与单一运算的行标
     * @param col 参与单一运算的列标
     * @return result 运算结果
     */
    public int calculateSingleResult(int[][] matrix_a, int[][] matrix_b, int row, int col){
        int result = 0;
        for(int i = 0; i < matrix_a[0].length; i++){
            result += matrix_a[row][i] * matrix_b[i][col];
        }
        return result;
    }
    /**
     * 判断矩阵是否可以进行合法运算
     * @param matrix_a 矩阵a
     * @param matrix_b 矩阵b
     * @param type 判断运算类型,是加法,减法,还是乘法运算
     * @return legal true 运算合法; false 运算不合法
     */
    private boolean legalOperation(int[][] matrix_a, int[][] matrix_b, int type){
        boolean legal = true;
        if(type == OPEROPERATION_ADD || type == OPEROPERATION_SUB){
            if(matrix_a.length != matrix_b.length || matrix_a[0].length != matrix_b[0].length){
                legal = false;
            }
        }else if(type == OPEROPERATION_MUL){
            if(matrix_a.length != matrix_b[0].length){
                legal = false;
            }
        }
        return legal;
    }
    public static void main(String[] args) {
        int a[][] = new int[][]{{1,2},{3,4}};
        int b[][] = new int[][]{{5,6},{7,8}};
        BasicMatrixMath bmm = new BasicMatrixMath();
        System.out.println("addition two matrix");
        int[][] result = bmm.additive(a, b);
        for (int i = 0; i < result.length; i++) {
            for (int j = 0; j < result[0].length; j++) {
                System.out.print("\t" + result[i][j]);
            }
            System.out.println();
        }
        System.out.println("substract two matrix");
        int[][] result1 = bmm.subtraction(a, b);
        for (int i = 0; i < result1.length; i++) {
            for (int j = 0; j < result1[0].length; j++) {
                System.out.print("\t" + result1[i][j]);
            }
            System.out.println();
        }
        System.out.println("multiplex one matrix");
        result = bmm.multiplication_b(a, 3);
        for (int i = 0; i < result.length; i++) {
            for (int j = 0; j < result[0].length; j++) {
                System.out.print("\t" + result[i][j]);
            }
            System.out.println();
        }
        System.out.println("multiplex two matrix");
        result = bmm.multiplication_a(a, b);
        for (int i = 0; i < result.length; i++) {
            for (int j = 0; j < result[0].length; j++) {
                System.out.print("\t" + result[i][j]);
            }
            System.out.println();
        }
    }
}