我有点困惑。之前我发布了一个问题:Conventional Programming: How do you return two Types of primitive ('int and 'string') from "get" method?
得到的答案是使用String.format() with format specifiers (%s, %d, %f...)
。
虽然答案有点令人困惑但我明白%f意味着转换(?)
但是如何使用此方法打印age
和name
。我的尝试:
// DISPLAY Person name and age
public String displayProfile() {
return String.format(%fgetAge(), %fgetName())
}
执行上述方法的主要方法:
if (optionSelected == 2) {
System.out.println(zac.displayProfile());
}
我到处都是这个,任何帮助都会受到赞赏。
更新: 根据要求,我发布了与String.format()方法一起使用的get和set方法。因为虽然在纠正String.format方法后我没有收到任何错误,但是在从String.format()返回getAge()和GetName()之后,它没有打印出'name'和'age'。我提出任何想法的错误是什么?
// SET NAME
public void setName(String name) {
this.name = name;
}
// GET NAME
public String getName() {
return this.name;
}
// SET AGE
public void setAge(int age) {
this.age = age;
}
// GET AGE
public int getAge() {
return this.age;
}
答案 0 :(得分:2)
格式说明符和函数需要是分开的,因此说明符在字符串中,并且需要在字符串后调用函数:
public String displayProfile() {
return String.format("%d, %s", getAge(), getName());
}
答案 1 :(得分:0)
你需要这样做:
public String displayProfile() {
return String.format("%d %s", getAge(), getName())
}
format方法有几个参数,第一个始终是要格式化的字符串。所有其他都是替换第一个字符串中的占位符的变量。所以你在这里做的是告诉java打印一个字符串("%d %s"
),它有两个占位符(一个用于整数,一个用于字符串),用一个空格字符分隔。然后,您以相同的顺序从左到右提供占位符的值。
此外,我强烈建议您开始浏览http://docs.oracle.com/javase/tutorial/或其他一些教程。
答案 2 :(得分:0)
您可以将String.Format()
用作:
public String displayProfile() {
return String.format("Age: %f, Name: %s", getAge(), getName());
}
其中%f
代表浮点类型,%s
代表 String 类型。我认为你不需要浮点代表Age
。我宁愿使用 int 并使用%d
来格式化。
您可以进一步了解格式here