我是编码方面的初学者,但我不知道为什么此代码无法正常工作。附言当我键入时,它没有在eclipse中显示任何错误,但是当我运行它时,它没有运行。这仅在我使用String.format()
时发生,当我使用StringBuilder
返回toString
方法时,代码运行正常。
class Dog {
private int age;
private String name;
public Dog(String name, int age) {
this.age = age;
this.name = name;
}
public String toString() {
return String.format("my name is %s and im %d years old", name, age);
}
}
class App {
public static void main(String[] args) {
Dog dog1 = new Dog("bob", 6);
System.out.println(dog1);
}
}
答案 0 :(得分:3)
对于%s
,您需要使用name
;对于%d
,您需要使用age
:错误的处理方法。
另外,您还应该在@Override
方法中添加toString()
。
答案 1 :(得分:2)
看看String.format()
参数here的用法。
%d
适用于 byte,short,int,long,bigint 。%s
更改为任何类型 由于name
是String
,因此您必须使用%s
,因为age
是int
,因此您可以同时使用%s
或{ {1}}。因此,声明
%d
AND
return String.format("my name is %s and im %d years old", name, age);
都是有效的。
答案 2 :(得分:0)
将该行更改为以下内容:
return String.format("my name is %s and im %d years old", name, age);
由于%s
用于字符串,%d
用于数字。