使用简单的打印方法打印数组对象

时间:2014-11-02 20:52:00

标签: java arrays class object methods

如何引用我正在实现实例方法的对象。我写了一个名为MatrixMaker的类,看起来像这样:

package one;

public class MatrixMaker {

private int rows;
private int columns;

public MatrixMaker(int m, int n){
    rows = m;
    columns = n;
    double[][] matrix = new double[rows][columns];

}

public void printer(){
    for(int i = 0; i < rows; i++){

        for(int j = 0; j < columns; j++){

            System.out.print(matrix[i][j]);
        }
        System.out.println();
    }

}

}

我使用以下方法初始化了这个类中的对象:

MatrixMaker matrix = new MatrixMaker(3,4);

我的问题是如何使用

matrix.printer();

打印数组。我似乎无法引用方法printer()内的对象的内容。特别是这一行:

System.out.print(matrix[i][j]);

5 个答案:

答案 0 :(得分:2)

您的double[][] matrix变量是构造函数的本地变量,因此它只存在于构造函数的范围内。将其设为实例变量,以便从其他方法访问它。

public class MatrixMaker {

private int rows;
private int columns;
private double[][] matrix;

public MatrixMaker(int m, int n){
    rows = m;
    columns = n;
    matrix = new double[rows][columns];

}

这将使printer方法可以访问它。     ...

答案 1 :(得分:2)

您的matrix数组是构造函数MatrixMaker(int m, int n)中的局部变量。如果你把它变成一个成员变量,你就可以从其他方法访问它。

public class MatrixMaker {

    private int rows;
    private int columns;
    private double[][] matrix;

    public MatrixMaker(int m, int n){
        rows = m;
        columns = n;
        matrix = new double[rows][columns];
    }

答案 2 :(得分:2)

您将矩阵定义为Matrix类构造函数的局部变量。这个类不会编译。

尝试将矩阵定义为字段:

public class MatrixMaker {

    private int rows;
    private int columns;
    private double[][] matrix;

    public MatrixMaker(int m, int n){
        rows = m;
        columns = n;
        matrix = new double[rows][columns];

    }

    public void printer(){
        for(int i = 0; i < rows; i++){
            for(int j = 0; j < columns; j++){
            System.out.print(matrix[i][j]);
        }
        System.out.println();
    }
} 

答案 3 :(得分:2)

您必须在类中声明变量矩阵,使其成为成员变量,而不是构造函数中的局部变量。

public class MatrixMaker(int m, int n) {
    private int rows;
    private int columns;
    private double[][] matrix;
    ...

答案 4 :(得分:1)

试试这个:

import java.util.Scanner;

public class MatrixMaker {

private int rows;
private int columns;
double[][] matrix;

public MatrixMaker(int m, int n){
rows = m;
columns = n;
matrix = new double[rows][columns];

}

public void printer(){
  for(int i = 0; i < rows; i++){

    for(int j = 0; j < columns; j++){

        System.out.print(matrix[i][j]+"  ");
    }
    System.out.println();
}

}

public static void main(String[] args) {
  MatrixMaker m=new MatrixMaker(4,4);
  Scanner in=new Scanner(System.in);
  System.out.println("Enter Matrix Elements:");
  for(int i=0;i<m.rows;i++){
    for(int j=0;j<m.columns;j++)
        m.matrix[i][j]=Integer.parseInt(in.next());
      }

   in.close();

  m.printer();
}

}

按照以下步骤在控制台中提供输入:

1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4

或者您可以逐个提供输入数字,如下所示: 1 2 3 4 五 6 ..