2207122216 发表于 2023-11-12 21:28:09

为什么这个不能运行 阿

问题是这个:
Error: Could not find or load main class juzheng.d2202203463
Caused by: java.lang.ClassNotFoundException: juzheng.d2202203463
代码是矩阵的各个用法
package ju;
public class ID_2202203463 {
        public class Matrix {
          private int[][] data;
          private int n;
          
          public Matrix(int n) {
                this.n = n;
                data = new int;
          }
          
          public Matrix(int[][] matrix) {
                this.n = matrix.length;
                data = matrix;
          }
          
          public void dayinMatrix() {
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n; j++) {
                      System.out.print(data + " ");
                    }
                    System.out.println();
                }
          }

          public Matrix 0Matrix() {
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n; j++) {
                      data = 0;
                    }
                }
                return this;
          }
       
          public Matrix createIdentityMatrix() {
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n; j++) {
                      if (i == j) {
                            data = 1;
                      } else {
                            data = 0;
                      }
                    }
                }
                return this;
          }
                    public Matrix multiplyMatrix(int constant) {
                Matrix result = new Matrix(n);
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n; j++) {
                      result.data = constant * data;
                    }
                }
                return result;
          }
          
          public Matrix addMatrix(Matrix another) {
                if (n != another.n) {
                    throw new IllegalArgumentException("两个矩阵的阶数不同,不能进行加法运算。");
                }
                Matrix result = new Matrix(n);
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n; j++) {
                      result.data = data + another.data;
                    }
                }
                return result;
          }
          
          public Matrix multiplyMatrix(Matrix another) {
                if (n != another.n) {
                    throw new IllegalArgumentException("矩阵相乘运算中的左矩阵的行数和右矩阵的列数不同,不能进行乘法运算。");
                }
                Matrix result = new Matrix(n);
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n; j++) {
                      int sum = 0;
                      for (int k = 0; k < n; k++) {
                            sum += data * another.data;
                      }
                      result.data = sum;
                    }
                }
                return result;
          }
          
       
          public Matrix transpose() {
                Matrix result = new Matrix(n);
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n; j++) {
                      result.data = data;
                    }
                }
                return result;
          }
        }
}
public class MatrixTest {
    public static void main(String[] args) {
      
      Matrix matrix = new Matrix(3);
         
      matrix.dayinMatrix();
      
      matrix.0Matrix();
      
      matrix.printMatrix();   
      matrix.createIdentityMatrix();   
      matrix.printMatrix();
      matrix.multiplyMatrix(2);   
      matrix.printMatrix();
      Matrix anotherMatrix = new Matrix(3);
      anotherMatrix.data = 1;
      anotherMatrix.data = 2;
      anotherMatrix.data = 3;
      anotherMatrix.data = 4;
      anotherMatrix.data = 5;
      anotherMatrix.data = 6;
      anotherMatrix.data = 7;
      anotherMatrix.data = 8;
      anotherMatrix.data = 9;
      matrix.addMatrix(anotherMatrix);
      matrix.dayinMatrix();
      Matrix resultMatrix = matrix.multiplyMatrix(anotherMatrix);   
      resultMatrix.dayinMatrix();
    }
}

isdkz 发表于 2023-11-12 21:28:20

这段代码中出现了几个问题:

1. 类名应该与文件名相同,但是文件名是ID_2202203463.java,而类名是Matrix和MatrixTest,这会导致编译错误。

2. 在Matrix类中,没有定义printMatrix()方法,但在MatrixTest类的main方法中调用了matrix.printMatrix(),这会导致编译错误。

3. 在Matrix类中,dayinMatrix()方法应该是public的,但是没有声明访问修饰符,这会导致编译错误。

4. 在MatrixTest类的main方法中,matrix.0Matrix()应该是matrix.zeroMatrix(),这个拼写错误会导致运行时错误。

5. 在MatrixTest类的main方法中,matrix.multiplyMatrix(2)应该是matrix.multiplyMatrix(2),这个拼写错误会导致运行时错误。

6. 在MatrixTest类的main方法中,matrix.printMatrix()应该是matrix.dayinMatrix(),这个方法名错误会导致运行时错误。

为了解决这些问题,需要做如下修改:

1. 将ID_2202203463.java文件改名为Matrix.java。

2. 在Matrix类中添加public void printMatrix()方法,用于打印矩阵。

3. 在Matrix类中的dayinMatrix()方法前添加访问修饰符public。

4. 在MatrixTest类的main方法中,将matrix.0Matrix()修改为matrix.zeroMatrix(),将matrix.multiplyMatrix(2)修改为matrix.multiplyMatrix(2),将matrix.printMatrix()修改为matrix.dayinMatrix()。

修改后的代码应该可以正常运行。

Mike_python小 发表于 2023-11-12 21:29:27

在Java语言中,当运行一个程序时,如果系统找不到或者无法加载指定的主类,就会报错"Could not find or load main class"。根据你提供的代码和报错信息,可以看出有两个潜在的问题可能导致这个错误。

首先,确保你的文件结构和包名是正确的。根据你的代码,你的包名应该是ju,并且文件应该位于名为ju的文件夹内。

其次,你的Matrix类没有被设置为public,这意味着在其他类中是无法直接访问的。因此,你需要将Matrix类设置为public,这样才能在MatrixTest类中正确地使用它。

修改后的代码如下:

java
package ju;

public class ID_2202203463 {
    public static class Matrix {
      private int[][] data;
      private int n;
      
      public Matrix(int n) {
            this.n = n;
            data = new int;
      }
      
      // 其他方法的实现...
    }
}

public class MatrixTest {
    public static void main(String[] args) {
      
      ID_2202203463.Matrix matrix = new ID_2202203463.Matrix(3);
      
      // 其他操作...
    }
}


请注意,我在Matrix类前加上了public修饰符,并在MatrixTest中使用了ID_2202203463.Matrix来表示Matrix类的完整路径。这样修改后,你应该可以成功运行这个程序了。希望对你有所帮助!
页: [1]
查看完整版本: 为什么这个不能运行 阿