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

Java 控制台输出未按预期打印正确的信息,java,class,object,println,Java,Class,Object,Println,以下代码: 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

以下代码:

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())似乎无法打印。如图所示:

从main调用的方法
toString()
不是您定义的
公共字符串toString(int x,int y)
。相反,它是
对象
中的默认实现,并生成您在输出中看到的字符串

要添加
toString
的自定义实现,您需要覆盖该实现,这意味着您需要精确匹配签名(即无参数)

差不多

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

您编写的toString方法需要2个参数,但您尚未传递。这就是为什么它调用对象类的toString。如果你想调用你的方法,你需要传递参数