首页 > 解决方案 > 控制台输出未按预期打印正确的信息

问题描述

以下代码:

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

控制台输出

标签: javaclassobjectprintln

解决方案


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

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

就像是

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

推荐阅读