0
    import java.util.Scanner;
    public class Matrix{
    private int rowNumber;
private int colNumber;
private int val;
int [][] matrix;

public Matrix(){
    rowNumber = 0;
    colNumber = 0;
}

public Matrix(int row, int col){
    rowNumber = row;
    colNumber = col;
    Matrix obj = new Matrix();
    matrix = new int [rowNumber][colNumber];

    Scanner input = new Scanner(System.in);
    for (int i = 0; i < rowNumber; i++) {
        for (int j = 0; j < colNumber; j++) {
            System.out.println("Enter A" + (i+1) +""+ (j+1) + " : ");
            matrix [i][j] = input.nextInt();
            int val = matrix[i][j];
            obj.setElement(rowNumber,colNumber,val);
        }               
    }
    obj.display();
}

public void setElement(int r, int c, int value){
    matrix = new int [rowNumber][colNumber];
    matrix[r][c] = value;
}

public int getElement(int r, int c){
    matrix = new int [rowNumber][colNumber];
    return matrix[r][c]; 
}



    public void display(){
Matrix ex = new Matrix();
String str = "|\t";
for(int i=0; i<rowNumber; i++){
    for(int j=0; j<colNumber ;j++){
        **str += ex.getElement(i,j) + "\t";**
        }
System.out.println(str + "|");
str = "|\t";
}
    }

    public static void main (String[] args) {
int rowNumber;
int colNumber;
Scanner input = new Scanner(System.in);

System.out.println("Enter number of rows: ");
rowNumber = input.nextInt();
System.out.println ("Enter number of columns: ");
colNumber = input.nextInt();
Matrix obj1 = new Matrix(rowNumber,colNumber);
    }
    }

我无法显示所需的矩阵。get 和 set 方法有问题。程序将值输入到数组中,并且该值存储在变量中。然后将该变量作为参数传递给 set 方法 setmethod 获取值并将其放入具有 r 行和 c 列的数组中,所有值都存储在一个数组中,然后在使用的构造函数中调用 display 方法get 方法来获取值。

4

2 回答 2

2

无需在 get 和 set 和 display 方法中再次创建数组。您不必要地创建了很多对象。我已更改您的代码以正常工作
请使用此代码

 import java.util.Scanner;

 class Matrix {

    private int rowNumber;
    private int colNumber;
    int[][] matrix;

    public Matrix() {
       rowNumber = 0;
       colNumber = 0;
    }

   public Matrix(int row, int col) {
       rowNumber = row;
       colNumber = col;
       matrix = new int[rowNumber][colNumber];

       Scanner input = new Scanner(System.in);
       for (int i = 0; i < rowNumber; i++) {
          for (int j = 0; j < colNumber; j++) {
              System.out.println("Enter A" + (i + 1) + "" + (j + 1) + " : ");
              setElement(i, j, input.nextInt());
          }
       }
       display();
    }

     public void setElement(int r, int c, int value) {
        matrix[r][c] = value;
     }

     public int getElement(int r, int c) {
        return matrix[r][c];
      }

     public void display() {

         String str = "|\t";
         for (int i = 0; i < rowNumber; i++) {
             for (int j = 0; j < colNumber; j++) {
                  str += getElement(i, j) + "\t";
             }
             System.out.println(str + "|");
             str = "|\t";
         }
    }

    public static void main(String[] args) {
      int rowNumber;
      int colNumber;
      Scanner input = new Scanner(System.in);

      System.out.println("Enter number of rows: ");
      rowNumber = input.nextInt();
      System.out.println("Enter number of columns: ");
      colNumber = input.nextInt();
      Matrix obj1 = new Matrix(rowNumber, colNumber);
   }
 } 
于 2013-08-25T18:48:08.567 回答
1

您的代码有几个NullPointerExceptions,主要是因为您Matrix使用空构造函数创建新对象,然后尝试从那里设置矩阵的属性,这意味着在您的空构造函数中没有创建矩阵,因此导致它指向 null。

试试这个(我也在这里使用了 Prabhaker 的答案):

public Matrix(int row, int col){
    rowNumber = row;
    colNumber = col;
    matrix = new int[rowNumber][colNumber];

    Scanner input = new Scanner(System.in);
    for (int i = 0; i < rowNumber; i++) {
        for (int j = 0; j < colNumber; j++) {
            System.out.println("Enter A" + (i + 1) + "" + (j + 1) + " : ");
            matrix[i][j] = input.nextInt();
            int val = matrix[i][j];
            setElement(rowNumber - 1, colNumber - 1, val);
        }
    }
    display();
}

public void setElement(int r, int c, int value) {
    matrix[r][c] = value;
}

public int getElement(int r, int c) {
    return matrix[r][c];
}

public void display() {
    String str = "|\t";
    for (int i = 0; i < rowNumber; i++) {
        for (int j = 0; j < colNumber; j++) {
            str += getElement(i, j) + "\t";
        }
        System.out.println(str + "|");
        str = "|\t";
    }
}`
于 2013-08-25T19:06:46.603 回答