1

需要编写一个方法 describePerson(),它接受 3 个参数,一个给出人名的字符串,一个指示其性别的布尔值(女性为 true,男性为 false),以及一个给出年龄的整数。该方法应返回一个字符串,其格式如下例所示:

云雀是女性。她今年 2 岁。或者杰是男性。他1岁。

我不确定如何正确编写它(我的代码):

int describePerson(String name, boolean gender, int age) {
    String words="";
    if(gender==true)  return (name + "is "+gender+". "+"She is"+age+ "years old.);
    else
        return (name + "is "+gender+". "+"She is"+age+ "years old.);

} 

结果“年”和“年”也不同,但我不知道如何使它正确..

4

7 回答 7

3

尝试对性别使用“三元”或“条件运算符”。您想输出“男性”或“女性”,而不是“真”或“假”,只需将布尔值附加到字符串即可。

假设“真”是女性:

String genderStr = (gender ?  "female" : "male");
String pronoun = (gender ?  "She" : "He");

是的,你可能想要返回一个String而不是一个 int。

于 2013-10-22T03:26:14.420 回答
3

的返回值describePerson应该是 type String。此外,布尔值gender不是字符串,因此您需要自己将表达式写入 return 语句。

String describePerson(String name, boolean gender, int age) {
    String yearString = (age == 1 ?  "year" : "years");

    if (gender) return (name + " is female. She is " + age + year + " old.");
    else return (name + " is male. He is " + age + year + " old.");
} 

除了描述的其他问题外,请务必记住以 . 结尾的字符串"

于 2013-10-22T03:26:32.623 回答
1

试试这个

public String describePerson(String name, boolean gender, int age) {
    String describe = "%s is %s. %s is %d years old.";
    boolean isFemale = gender == true;
    String sexGender = isFemale  ? "female" : "male";
    String sexType = isFemale  ? "She" : "He";
    String finalDescribe = String.format(describe, name, sexGender, sexType, age);
    System.out.println(finalDescribe);
    return finalDescribe;
}
于 2013-10-22T03:37:14.390 回答
1

首先,如果你想返回一个字符串,你的返回类型应该是字符串,所以方法签名应该是

String describePerson(String name, boolean gender, int age)

此外,您需要根据性别打印 he 和 she,因此必须有 if 条件。尝试使用以下代码代替您现有的方法

String describePerson(String name, boolean gender, int age) {
    String genderStr=null;
    String genderPro = null;
    String year = null;
    if(gender){
        genderStr = "female";
        genderPro = "She";
    }
    else{
        genderStr = "male";
        genderPro = "He";
    }
    if (age == 1) {
                   year = "year";
                 }
                 else {
                   year = "years";
                 }
    return (name + " is "+genderStr+". "+genderPro+" is "+age+ " "+ year+" old");
    } 
于 2013-10-22T03:50:22.053 回答
0

由于您要返回一个字符串,因此您需要将返回类型更改为 String

String describePerson(String name, boolean gender, int age) {
    String words="";
    if(gender==true)  return (name + "is "+gender+". "+"She is"+age+ "years old.);
    else
        return (name + "is "+gender+". "+"She is"+age+ "years old.);

} 
于 2013-10-22T03:27:14.357 回答
0

可能对您来说最好的方法是预先计算语句的各个部分,然后将它们放在一起:

String maleFemale;
String heShe;
String yearYears;

if (gender) {
  maleFemale = "female";
  heShe = "She";
}
else {
  maleFemale = "male";
  heShe = "He"
}
if (age == 1) [
  yearYears = "year";
}
else {
  yearYears = "years";
}
return name + " is " + maleFemale + ". " + heShe + " is " + age + " " + yearYears + " old.";

通常最好像这样把事情分解成你理解的部分,而不是尝试使用你不理解的花哨的操作,紧紧地聚集在一起,直到你无法遵循程序流程并在操作之间添加 println 语句.

于 2013-10-22T03:47:14.670 回答
-2

1:使用String.format

2:引入变量heShe

string describePerson(String name, boolean gender, int age) 
{
    String x = gender ? "She" : "He";

    return (name + "is "+gender+". " + x + " is"+age+ "years old.);
} 

3:参数gender是boolean,更好的是利用一个enum

于 2013-10-22T03:31:16.237 回答