题目要求如下:

  设计程序实现矩阵的四则运算

  设计要求:

  (1) 实现矩阵的四则运算。

  (2) 考虑实现带变元的矩阵计算。

  (3)考虑实现矩阵的特征值和特征向量的计算。

我使用java语言写的

目录结构如下所示:

  java语言编写矩阵的四则运算

Matrix类是对矩阵的建模,我用一个String类型的二维数组存放矩阵的元素,除此之外还有矩阵的行数和列数两个属性。代码如下:

 1 package org.java.pojo;
 2 
 3 public class Matrix {
 4     private String matrix[][];
 5     private int row;
 6     private int line;
 7     public String[][] getMatrix() {
 8         return matrix;
 9     }
10     public void setMatrix(String[][] matrix) {
11         this.matrix = matrix;
12     }
13     public int getRow() {
14         return row;
15     }
16     public void setRow(int row) {
17         this.row = row;
18     }
19     public int getLine() {
20         return line;
21     }
22     public void setLine(int line) {
23         this.line = line;
24     }
25 }

所有的调用逻辑写在在Begin.java里面,这里根据用户的选择,调用相应的方法。

java语言编写矩阵的四则运算

java语言编写矩阵的四则运算

具体的代码为:

  1 package org.java.main;
  2 
  3 import java.util.Scanner;
  4 
  5 import org.java.dao.Caculate;
  6 import org.java.pojo.Matrix;
  7 public class Begin {
  8     public static Scanner scan = new Scanner(System.in); 
  9     public static void main(String[] args){
 10         int chooseChar=0;
 11         while(chooseChar!=5){
 12             System.out.println("请选择要执行的运算");
 13             System.out.println("1、加法\n2、减法\n3、乘法\n4、求矩阵的特征值和特征向量\n5、退出");
 14             try {
 15                 chooseChar=scan.nextInt();
 16                 scan.nextLine();//用于处理输入结束之后的回车,否则会影响后面的输入
 17             } catch (Exception e) {
 18                 e.printStackTrace();
 19             }
 20             Begin beg=new Begin();
 21             switch(chooseChar){
 22                 case 1:{
 23                     beg.addOperation();
 24                     break;
 25                 }
 26                 case 2:{
 27                     beg.reduceOperation();
 28                     break;
 29                 }
 30                 case 3:{
 31                     beg.multiplyOperation();
 32                     break;
 33                 }
 34                 case 4:{
 35                     beg.complexOperation();
 36                     break;
 37                 }
 38             }
 39             if(chooseChar==5){
 40                 System.out.println("已停止工作");
 41             }
 42         }
 43     }
 44     public static void  publicPrint() {
 45         System.out.println("请输入矩阵,元素之间用逗号隔开,可以有变元,输入“quit”结束,如:\n"
 46                 + "1,2,3\n"
 47                 + "2,3,4\n"
 48                 + "3,4,5\n"
 49                 + "quit");
 50     }
 51     
 52     /**
 53      * 65~90:A~Z
 54      * 97~122:a~z
 55      * 选择加
 56      * @param list
 57      */
 58     public void addOperation(){
 59         System.out.println("您选择的是矩阵的加法运算,注意两个矩阵行数和列数要相等");
 60         Caculate caculate=new Caculate();
 61         publicPrint();
 62         Matrix matrix1=caculate.inputMatrix();
 63         System.out.println("请输入下一个矩阵:");
 64         Matrix matrix2=caculate.inputMatrix();
 65         Matrix matrix=null;
 66         try {
 67             matrix=caculate.addOperation(matrix1, matrix2);//调用封装方法计算
 68         } catch (Exception e) {
 69             e.printStackTrace();
 70         }
 71         System.out.println("运算结果为:");
 72         caculate.printMatrix(matrix);
 73     }
 74     
 75     /**
 76      * 65~90:A~Z
 77      * 97~122:a~z
 78      * 选择减
 79      * @param list
 80      */
 81     public void reduceOperation(){
 82         System.out.println("您选择的是矩阵的减法运算,注意两个矩阵行数和列数要相等");
 83         Caculate caculate=new Caculate();
 84         publicPrint();
 85         Matrix matrix1=caculate.inputMatrix();
 86         System.out.println("请输入下一个矩阵:");
 87         Matrix matrix2=caculate.inputMatrix();
 88         Matrix matrix=null;
 89         try {
 90             matrix=caculate.reduceOperation(matrix1, matrix2);//调用封装方法计算
 91         } catch (Exception e) {
 92             e.printStackTrace();
 93         }
 94         System.out.println("运算结果为:");
 95         caculate.printMatrix(matrix);
 96     }
 97     
 98     /**
 99      * 65~90:A~Z
100      * 97~122:a~z
101      * 选择乘
102      * @param list
103      */
104     public void multiplyOperation(){
105         System.out.println("您选择的是矩阵的乘法运算,注意第一个矩阵的列数要和第二个矩阵的行数相等");
106         Caculate caculate=new Caculate();
107         publicPrint();
108         Matrix matrix1=caculate.inputMatrix();
109         System.out.println("请输入下一个矩阵:");
110         Matrix matrix2=caculate.inputMatrix();
111         Matrix matrix=null;
112         try {
113             matrix=caculate.multiplyOperation(matrix1, matrix2);//调用封装方法计算
114         } catch (Exception e) {
115             e.printStackTrace();
116         }
117         System.out.println("运算结果为:");
118         caculate.printMatrix(matrix);
119     }
120     /**
121      * 65~90:A~Z
122      * 97~122:a~z
123      * 选择特征值特征向量
124      * @param list
125      */
126     public void complexOperation(){
127         System.out.println("您选择的是计算矩阵的特征值特征向量");
128         Caculate caculate=new Caculate();
129         publicPrint();
130         Matrix matrix=caculate.inputMatrix();
131         System.out.println("运算结果为:");
132         MatrixEigenValue.caculateEigen(matrix.getMatrix());        
133     }
134     
135     
136 }
Begin.java

相关文章:

  • 2022-12-23
  • 2021-08-17
  • 2022-12-23
  • 2021-04-16
  • 2022-01-23
  • 2021-09-30
  • 2021-07-25
猜你喜欢
  • 2021-05-17
  • 2021-09-19
  • 2021-06-06
  • 2022-01-01
  • 2022-12-23
  • 2022-02-06
相关资源
相似解决方案