javaoop中的矩阵操作

javaoop中的矩阵操作,java,Java,这段代码在第153行、第158行和第163行给出了错误,说明“未找到变量”。我需要使用菜单打印它们,但不确定这是否有效。我们将不胜感激 import java.io.*; import java.util.*; class Matrix { double[][] element; int rows, cols; Matrix(int rows, int cols) { this.rows = rows; this.cols = cols; element = n

这段代码在第153行、第158行和第163行给出了错误,说明“未找到变量”。我需要使用菜单打印它们,但不确定这是否有效。我们将不胜感激

import java.io.*;
import java.util.*;



class Matrix {

double[][] element;
int rows, cols;

Matrix(int rows, int cols) {
    this.rows = rows;
    this.cols = cols;
    element = new double[rows][cols];
}

public double getValue(int row, int col) {
    return element[row][col];
}

public void setValue(int row, int col, double value) {
    element[row][col] = value;
}

public int getNoRows() {  // returns the total number of rows
    return rows;
}

public int getNoCols() { // returns the total number of cols
    return cols;
}

// The methods for the main calculations
public Matrix AddMatrix(Matrix m2) {
    int row1 = getNoRows();
    int col1 = getNoCols();
    Matrix result = new Matrix(row1, col1);

    for (int i = 0; i < row1; i++) {
        for (int j = 0; j < col1; j++) {
            result.setValue(i, j, this.getValue(i, j) + m2.getValue(i, j));
        }
    }
    return result;
}

public Matrix MultiplyMatrix(Matrix m2) {
    if (this.getNoCols() != m2.getNoRows()) {
        throw new IllegalArgumentException("matrices can't be multiplied");
    }
    int row2 = this.getNoRows();
    int col2 = m2.getNoCols();
    Matrix result = new Matrix(row2, col2);
    for (int i = 0; i < row2; i++) {
        for (int j = 0; j < col2; j++) {
            result.setValue(i, j, result.getValue(i, j) + this.getValue(i, j) * m2.getValue(i, j));
        }
    }
    return result;

}

public Matrix TransposeMatrix() {
    int row3 = this.getNoCols();
    int col3 = this.getNoRows();
    Matrix result = new Matrix(row3, col3);
    for (int i = 0; i < row3; i++) {
        for (int j = 0; j < col3; j++) {
            result.setValue(i, j, this.getValue(j, i));
        }
    }
    return result;

}

public void DisplayMatrix() {
    for (int i = 0; i < this.getNoRows(); i++) {
        for (int j = 0; j < this.getNoCols();
                j++) {
            System.out.print((this.getValue(i, j)) + " ");
        }
        System.out.print("\n");
    }
    System.out.print("\n");
  }
 }



 public class Lab1 {

 public static void main(String args[]) throws FileNotFoundException {

    int choice;
    Scanner in = new Scanner(System.in);

    Boolean loopcont= true;
    while (loopcont){   
    System.out.println("1. Add two matrices \n");
    System.out.println("2. Multiplymatrix two matrices \n");
    System.out.println("3. Take transpose of a matrix \n");
    System.out.println("4. Display a matrix \n");
    System.out.println("5. Exit \n");

    System.out.println("Enter your choice \n");
    choice = in.nextInt();

    switch (choice) {

    case 1:{ 
        System.out.println("For the first matrix");
        Matrix m1 =  MatrixReader();
        m1.DisplayMatrix();
        System.out.println("For the second matrix");
        Matrix m2 =  MatrixReader();
        m2.DisplayMatrix();
        Matrix m3 = new Matrix(m1.getNoRows(), m1.getNoCols());
        m3 = m1.AddMatrix(m2);
        m3.DisplayMatrix();
        break ;
    }
    case 2:{
        System.out.println("For the first matrix");
        Matrix m1 =  MatrixReader();
        m1.DisplayMatrix();
        System.out.println("For the second matrix");
        Matrix m2 =  MatrixReader();
        m2.DisplayMatrix();
        Matrix m3 = new Matrix(m1.getNoRows(), m2.getNoCols());
        m3 = m1.MultiplyMatrix(m2);
        m3.DisplayMatrix();
        break;

    }
    case 3:{
        System.out.println("For the first matrix");
        Matrix m1 = MatrixReader();
        m1.DisplayMatrix(); 
        Matrix m3 = new Matrix(m1.getNoRows(), m1.getNoCols());
        m3 = m1.TransposeMatrix();
        m3.DisplayMatrix();
        break;
    }
    case 4:{
        int printInput;
        System.out.println("What matrix do you want to print?");
        printInput = in.nextInt();
        switch(printInput){
        case 1:{    
        System.out.println("Printing Matrix m1");
        m1.DisplayMatrix();
        break;
        }
        case 2:{
        System.out.println("Printing Matrix m2");
        m2.DisplayMatrix();
        break;
        }
        case 3:{
        System.out.println("Printing Matrix m3");
        m3.DisplayMatrix();
        break;
        }
        default:{
        System.out.println("Invalid Input. please enter again");
        break;
        }
    }
}   
case 5:{
      loopcont= false;
      break;
}
    default:{
        System.out.println("Incorrect input. Kindly enter again \n");
        break;
     }
    }
 }
}

public static Matrix MatrixReader() throws FileNotFoundException {
    System.out.println("Give the filename for the matrix");
    Scanner filescanner = new Scanner(System.in);
    Scanner scanner = new Scanner(new File(filescanner.nextLine()));
    scanner.nextLine(); // removes the first line in the input file
    String rowLine = scanner.nextLine();
    String[] arr = rowLine.split("=");
    int rows = Integer.parseInt(arr[1].trim());

    String colLine = scanner.nextLine();
    String[] arr2 = colLine.split("=");
    int cols = Integer.parseInt(arr2[1].trim());
    Matrix test = new Matrix(rows, cols);

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            test.setValue(i, j, scanner.nextDouble());
        }
    }


    return test;

   }
}
import java.io.*;
导入java.util.*;
类矩阵{
双[]元素;
int行,cols;
矩阵(整数行,整数列){
this.rows=行;
this.cols=cols;
元素=新的双[行][cols];
}
公共双getValue(整数行,整数列){
返回元素[行][col];
}
公共void设置值(整行、整列、双值){
元素[行][列]=值;
}
public int getNoRows(){//返回总行数
返回行;
}
public int getNoCols(){//返回列的总数
返回cols;
}
//主要计算方法
公共矩阵AddMatrix(矩阵m2){
int row1=getNoRows();
int col1=getNoCols();
矩阵结果=新矩阵(第1行,第1列);
对于(int i=0;i
编辑:

情况4下:变量m1、m2、m3未初始化

    Matrix m1;
    Matrix m2;
    Matrix m3;

switch (choice) {
    case 1: {
        System.out.println("For the first matrix");
        m1 = MatrixReader();
        m1.DisplayMatrix();
        System.out.println("For the second matrix");
        m2 = MatrixReader();
        m2.DisplayMatrix();
        m3 = new Matrix(m1.getNoRows(), m1.getNoCols());
        m3 = m1.AddMatrix(m2);
        m3.DisplayMatrix();
        break;
    }
    case 2: {
        System.out.println("For the first matrix");
        m1 = MatrixReader();
        m1.DisplayMatrix();
        System.out.println("For the second matrix");
        m2 = MatrixReader();
        m2.DisplayMatrix();
        m3 = new Matrix(m1.getNoRows(), m1.getNoCols());
        m3 = m1.MultiplyMatrix(m2);
        m3.DisplayMatrix();
        break;

    }
    case 3: {
        System.out.println("For the first matrix");
        m1 = MatrixReader();
        m1.DisplayMatrix();
        m3 = m1.TransposeMatrix();
        m3.DisplayMatrix();
        break;
    }
    case 4: {
        int printInput;
        System.out.println("What matrix do you want to print?");
        printInput = in.nextInt();
        switch (printInput) {
        case 1: {
            System.out.println("Printing Matrix m1");
            m1 = MatrixReader();
            m1.DisplayMatrix();
            break;
        }
        case 2: {
            System.out.println("Printing Matrix m2");
            m2 = MatrixReader();
            m2.DisplayMatrix();
            break;
        }
        case 3: {
            System.out.println("Printing Matrix m3");
            m3 = new Matrix(m1.getNoRows(), m1.getNoCols());
            m3.DisplayMatrix();
            break;
        }
        default: {
            System.out.println("Invalid Input. please enter again");
            break;
        }
        }
    }
    case 5: {
        loopcont = false;
        break;
    }
    default: {
        System.out.println("Incorrect input. Kindly enter again \n");
        break;
    }
}

如果您厌倦了用matrix编写自己的代码,只需下载我开发的库即可。它可以加法、乘法、求逆、转置、计算行列式和求解线性系统

请检查:


这是开源的,您也可以下载源代码,看看in是如何工作的。

您能指出这些代码是哪一行吗?例如,在这些行上添加注释。此外,发布准确的错误消息