Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中重写toString()时遇到问题_Java_String_Inheritance_Interface_Abstract Class - Fatal编程技术网

在Java中重写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++){

我的任务是为我的Java类实践接口、抽象类、子类和继承。在我的抽象超类(称为Matrix)中,我必须重写toString()方法(使用相同的签名),以便它打印由空格分隔的数组的所有元素和由换行符分隔的行。像这样:

 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(...);