控制台输出未按预期输出正确的信息

问题描述

以下代码

public class Drone {

    static int x;
    static int y;
    
    public Drone(int x,int y) {
        toString(x,y);
        System.out.println("X is "+x);
        System.out.println("Y is "+y);
        
    }
    public String toString(int x,int y) {
        System.out.println("X is "+x);
        System.out.println("Y is "+y);
        return "Drone 0 is at "+x+","+y;
    }
    
    public static void main(String[] args) {
        Drone d = new Drone(5,3);      // create drone
        System.out.println(d.toString());   // print where is
        
    }

使行System.out.println(d.toString());似乎不打印。如此处所示:

console output

解决方法

您从main调用的方法toString()不是您定义的public String toString(int x,int y)。相反,它是Object的默认实现,它会完全生成您在输出中看到的String。

要添加toString的自定义实现,您需要覆盖该实现,这意味着您需要完全匹配签名(即没有参数)。

类似

@Override
public String toString() {
    return "Drone 0 is at "+this.x+","+this.y;
}
,

您编写的toString方法需要两个自变量,但尚未传递。这就是为什么它要调用对象类的toString的原因。如果要调用方法,则需要传递参数。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...