我有一个int
变量,我想创建一个String
方法来返回int
变量,我该怎么办呢?以下示例...并设置getAge()
方法在年龄为18时返回“年轻”,在年龄为30时返回“年龄”。
private int age;
public String getAge() {
}
答案 0 :(得分:5)
字面意思:
public String getAge() {
return (30 == age)? "old":
(18 == age)? "young":
// because you said 18 is young, 30 is old, but didn't say
// anything about all of the other ages!
"I don't understand!";
}
你可以通过几种方式做到这一点。三元结构和“if”语句通常是最好的。
// this if/else reads "(if age >= 30 then return old) else return young"
public String getAge() {
if (30 <= age)
return "old";
else
return "young";
}
// this ternary statement reads "return (if age >= 30 then old) else young"
public String getAge() {
return (30 <= age)? "old":"young";
}
// This would be my preference
public String getAge() {
// add bounds checking!
if (125 <= age)
return "You are probably dead";
else if (0 > age)
return "Hi doc brown! What's it like to travel through time?";
else if (30 <= age)
return "old";
return "young";
}
答案 1 :(得分:0)
getAge()不是一个好的命名方法。
让其他开发者/用户感到困惑的是, getAge()会返回一个int号。
我认为您应该将您的方法命名为 getAgeClass()。
请注意,公共方法将暴露给其他类,非常重要的是,公共方法的命名应该是有意义的,而不是混淆。当您编写OO
时,这是一个很好的做法答案 2 :(得分:0)
我不推荐这个只有2个年龄的小案例,但如果你想扩展...
您当然也可以添加显示字符串。
public enum AgeMonikers
{
AweCute(2),
DontTouchThat(4),
Child(10),
Preteen(13),
Trouble(20),
MoveOut(24),
ThinkYouKnowEverythingDev(25),
ActuallyKnowSomeDev(30),
OldFart(100),
WishIWasDead(Integer.MAX_VALUE);
private int maxAge;
private AgeMonikers(int ageLimit)
{
maxAge = ageLimit;
}
static public AgeMonikers getMoniker(int age)
{
if (age < 0)
return null;
for(int i=values().length-1; i>0; i--)
{
AgeMonikers val = values()[i];
if (age >= val.maxAge)
return values()[i+1];
}
return AweCute; // age < 2 - I know it will include negatives.
}
}
public String getAge()
{
return AgeMoniker.getMoniker(age).toString();
}
答案 3 :(得分:-1)
更好地使用switch语句,因为条件表达式没有改变。 所以这样做:
switch (age) {
case 18:
return "young";
case 30:
return "old";
default:
return "??";
}