使用get set方法需要在此代码中提供帮助

时间:2013-08-25 18:44:05

标签: java

    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获取vaalue并将其放入具有r row和c列的数组中,所有值都存储在数组中,然后在构造函数中调用display方法,该构造函数使用get方法来获取值。

2 个答案:

答案 0 :(得分: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);
   }
 } 

答案 1 :(得分:1)

您的代码有几个NullPointerException,主要是因为您使用空构造函数创建新的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";
    }
}`