在Java中重写toString()时遇到问题
我的任务是为我的Java类实践接口、抽象类、子类和继承。在我的抽象超类(称为Matrix)中,我必须重写toString()方法(使用相同的签名),以便它打印由空格分隔的数组的所有元素和由换行符分隔的行。像这样:在Java中重写toString()时遇到问题,java,string,inheritance,interface,abstract-class,Java,String,Inheritance,Interface,Abstract Class,我的任务是为我的Java类实践接口、抽象类、子类和继承。在我的抽象超类(称为Matrix)中,我必须重写toString()方法(使用相同的签名),以便它打印由空格分隔的数组的所有元素和由换行符分隔的行。像这样: public String toString(){ String result=""; for(int x=0; x<nRows(); x++){ for(int y=0; y<nColumns(); y++){
public String toString(){
String result="";
for(int x=0; x<nRows(); x++){
for(int y=0; y<nColumns(); y++){
result+=""+get(x,y)+" ";
}
result+="\n";
}
return result;
}
它返回给我一个满是零的矩阵。我原以为问题出在我的随机化算法上,但没有。我开始调试,结果发现我的resultMatrix(来自方法randomMatrix)使用了toString方法,变成了一个大字符串(应该打印结果),因此我无法为元素分配新的随机值。奇怪的是toString()从未在randomMatrix中调用。那么为什么resultMatrix使用toString方法呢?我尝试在我的超类中注释toString覆盖,它解决了这个问题,但是,在我的作业中,我必须以这种方式打印矩阵
帮忙?我做错了什么?不能使用对象调用静态方法,因为它没有意义 矩阵
a
和resultMatrix
是两个独立的对象。要获取随机矩阵,请调用:
Matrix m = FullMatrix.randomMatrix(...);
调用
a.随机矩阵(4,4,-3,5)
返回一个FullMatrix
对象,但您没有使用返回值,因此它被丢弃。这样做:FullMatrix a=FullMatrix.randomMatrix(4,4,-3,5)代码>。您正在对实例调用静态方法。你的意思可能与FullMatrix a=FullMatrix.randomMatrix(4,4,-3,5)
类似吗?toString
似乎不是你的问题。@Jesper非常感谢!成功了!现在一切都好了!我刚刚意识到调试使用了我新定义的toString来显示矩阵,因为它通常可能会将变量结果显示为字符串!
FullMatrix a = new FullMatrix(4,4);
a.randomMatrix(4,4,-3,5);
Matrix m = FullMatrix.randomMatrix(...);