【发布时间】:2016-01-15 19:34:17
【问题描述】:
起初很抱歉,如果不是一切都可以理解(我来自德国)。请试着理解我对java很陌生,可能犯了一些愚蠢的错误。我有两节课。一种带有构造函数和函数,一种带有菜单。
第 1 类(构造函数和函数):
public class Matrix {
private float[][] matrix;
...
public void createMatrix(int zei, int spa){
...
public void printMatrix(){
int x = 0;
while (x < this.matrix.length){
for (float elem : this.matrix[x]){
System.out.printf("%10d", elem);
}
x++;
System.out.println();
}
System.out.println();
}
第 2 类(菜单):
public class MenuMatrix{
public static void menue(){
...
if (m1 == null){
Matrix m1 = new Matrix();
m1.createMatrix(zei, spa);
}
else if (m2 == null){
Matrix m2 = new Matrix();
m2.createMatrix(zei, spa);
}
else{
System.out.println("Which matrix do you want to replace?");
m1.printMatrix();
m2.printMatrix();
int x = readInteger("Please choose matrix (1) or (2).");
...
我想确保只有 2 个此类对象可以存在。因此,我已经包括检查对象是否已经存在(m1/m2 == null)。有第一个错误。根据 if 子句,它告诉我“m1/m2 无法解析为变量”。另一个错误出现在 m1/m2.printMatrix() 行中。 Eclipse 说“无法解析 m1/m2”。 几个不同网站上的信息告诉我它应该以这种方式工作。希望你能告诉我问题到底出在哪里。
提前致谢。
【问题讨论】:
-
Java variable scope。在你的情况下,它甚至不是范围,你甚至没有声明
m1 -
跟作用域无关,他的变量在声明之前就被引用了
-
你在哪里声明m1/m2?它们还不存在。
-
您的代码不完整。请发布完整版本,因为我们的眼睛可能会误解某些内容。无论如何,据我所知,您正在检查 m1 和 m2 而不考虑声明范围:您将它们声明并初始化到 IF..THEN..ELSE 中,但您尝试将它们检查到 IF 语句中。那是你想要达到的吗?如果是,您应该更改变量的范围。
标签: java object constructor