如何引用我正在实现实例方法的对象。我写了一个名为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]);
答案 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 ..