我有一个包含类定义的Matrix类:
import java.util.Scanner;
public class Matrix {
private int[][] matrix;
//construct matrix with given number of rows and columns
public Matrix(int n, int m){
matrix = new int[n][m];
}
//input values into matrix
public void readMatrix(){
Scanner input = new Scanner(System.in);
for (int r = 0; r < matrix.length; r++){
for (int c = 0; c < matrix[r].length; c++){
matrix[r][c] = input.nextInt();
}
}
}
//display values of matrix
public void displayMatrix(){
for (int r = 0; r < matrix.length; r++){
for (int c = 0; c < matrix[r].length; c++){
System.out.print(matrix[r][c] + " ");
}
System.out.print("\n");
}
}
}
和一个MatrixApp类,其中包含以下主要内容:
import java.util.Scanner;
public class MatrixApp {
public static void main(String[] args) {
Matrix m1 = null; //create matrix m1
promptMatrix(m1); //ask for data for m1 from user
m1.displayMatrix(); //display m1
}
private static void promptMatrix(Matrix m) {
Scanner input = new Scanner(System.in);
int rows, columns;
//ask for number of rows
System.out.print("Enter the number of rows: ");
rows = input.nextInt();
//ask for number of columns
System.out.print("Enter the number of columns: ");
columns = input.nextInt();
//create matrix
m = new Matrix(rows, columns);
//ask for matrix data
System.out.println("Enter matrix: ");
m.readMatrix();
}
}
我在上收到Null Pointer Exception错误m1.displayMatrix()
。我想这是因为尽管我已将m1传递给方法hintMatrix,但m1中什么都没有存储。为什么会这样,请问我该如何解决?
编辑:关于错误发生的位置,我犯了一个错误(我的错误,我没有完全读完。但是,下面写的内容对于理解如何更好地以易于阅读的方式编写代码很有用,所以我将离开起来吧。
<----此标记与下面的标记之间的任何内容都不是解决此问题的正确方法,但有助于理解以下内容可能会带来的好处,因此我将其保留下来->
就像您说的m1为null一样,您正在将其传递到方法中,因此您收到了NullPointerException。您将需要通过new运算符初始化Matrix对象。矩阵m1 =新矩阵(n,m); // n和m是它们所需的任何值,因为没有默认构造函数,但这不是完成您要执行的操作的好方法。
<----此标记与上面的标记之间的任何内容都不是解决此问题的正确方法,但有助于理解以下内容可能会带来的好处,因此我将其保留下来->
正确的方法是让该方法返回一个Matrix对象而不是一个对象。
方法如下所示:
public static Matrix promptMatrix() {
//code to get n and m and set up matrix
return new Matrix(n, m);
}
然后,在您的主要方法中,您将执行以下操作:
Matrix m1 = promptMatrix();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句