java - 控制台输出未按预期打印正确的信息
问题描述
以下代码:
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()
不是public String toString(int x, int y)
您定义的。相反,它是来自 的默认实现Object
,它会准确生成您在输出中看到的字符串。
要添加 的自定义实现toString
,您需要覆盖该实现,这意味着您需要完全匹配签名(即无参数)。
就像是
@Override
public String toString() {
return "Drone 0 is at "+this.x+","+this.y;
}
推荐阅读
- flutter - 如何在颤动中计算 GridView.builder 的 childAspectRatio
- xamarin.forms - Xamarin Forms 如何为自定义布局滚动条添加?
- flutter - 如何使用 BottomNavyBar 在页面之间导航
- protocol-buffers - NodeJS:protoc生成的文件不生成服务定义
- java - 如何编写写入数据库的集成测试,然后检索值,并验证所有字段是否正确填充
- c - 当 phnum 是测试中的局部变量时,我不明白如何在程序开始时使用 define LEFT(phnum + 4)%N
- r - R 包示例在 Mac 上运行但不在 Windows 上运行(“分配”错误)
- c# - 一次关闭多个窗口
- eclipse - eclipse下无法运行junit5(2020-06(4.16.0))
- google-apps-script - 基于列谷歌脚本中的单元格分配值