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

Java 使用简单的打印方法打印数组对象,java,arrays,class,object,methods,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]; } pub

如何引用在其上实现实例方法的对象。我编写了一个名为
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();
    }

}
我的问题是如何使用

matrix.printer();
打印数组。我似乎无法引用方法
printer()
中对象的内容。具体而言,该行:

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

您的
double[][]矩阵
变量是构造函数的局部变量,因此它只存在于构造函数的范围内。使其成为实例变量,以便从其他方法访问它

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 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];
    }
这将使
打印机
方法可以访问它。

您的
double[][]矩阵
变量是构造函数的局部变量,因此它只存在于构造函数的范围内。使其成为实例变量,以便从其他方法访问它

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 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];
    }
这将使
打印机
方法可以访问它。

您的
矩阵
数组是构造函数
矩阵生成器(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];

}
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];
    }

您的
矩阵
数组是构造函数
矩阵生成器(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];

}
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 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();
    }
} 
公共类矩阵生成器{
私有int行;
私有int列;
私有双[]矩阵;
公共矩阵生成器(int m,int n){
行=m;
列=n;
矩阵=新的双[行][列];
}
公用打印机(){
对于(int i=0;i
您将matrix定义为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();
    }
} 
公共类矩阵生成器{
私有int行;
私有int列;
私有双[]矩阵;
公共矩阵生成器(int m,int n){
行=m;
列=n;
矩阵=新的双[行][列];
}
公用打印机(){
对于(int i=0;i
必须在类中声明变量矩阵,使其成为成员变量,而不是构造函数中的局部变量

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

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

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

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. 5. 6. ..

试试这个:

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. 5. 6.
..

在类范围中定义
double[]matrix
。因此将其放置在
private int columns;
所在的位置。谢谢!我甚至没有想到这个。定义
double[]矩阵
在你的类范围内。所以把它放在
private int columns;
所在的位置。谢谢你!我甚至没有想到这一点。它起作用了!再次感谢。我应该想到这一点。它起作用了!再次感谢。我应该想到这一点。