6

名前、年齢、性別の 3 つのフィールドを含む Employee クラスを作成しています。性別フィールドを作成する必要がありますが、ユーザーは男性または女性しか選択できません。これをブール形式で行う必要があると思いますが、どうすればよいかわかりません。誰でも私を助けることができますか?

これまでのところ、私は持っています:

public class Employee {

private String name;
private int age;
private boolean gender;
private boolean male;
private boolean female;

public Employee(String name, int age, boolean gender) 
{
    this.name = name;
    this.age = age;

    boolean f = female;
    boolean m = male;

    if (gender = f)
    {
        System.out.print("female");
    }

    else if (gender = m)
    {
        System.out.print("male");
    }
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public boolean isGender() {
    return gender;
}

public void setGender(boolean gender) 
{
    if (gender = f)
    {
        System.out.print("female");
    }

    else if (gender = m)
    {
        System.out.print("male");
    }
}
}
4

11 に答える 11

23

性別には列挙型を使用することをお勧めします。

public enum Gender {
    MALE, FEMALE
}
于 2012-07-24T20:59:59.813 に答える
4

を使用するbooleanか、Gender列挙型を作成できます。

Gender.java では:

public enum Gender {
    MALE,
    FEMALE
}

Employee.java で:

public class Employee {

    private String name;
    private int age;
    private Gender gender;

    public Employee(String name, int age, Gender gender) 
    {
        this.name = name;
        this.age = age;
        this.gender = gender;
        printGender();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Gender getGender() {
        return gender;
    }

    public void setGender(Gender gender) 
    {
        this.gender = gender;
    }

    public final void printGender() {
        System.out.println(gender.name().toLower());
    }    
}
于 2012-07-24T21:02:58.527 に答える
3

isMaleブール値を使用する場合は、 orisFemaleではなくorと呼ぶ必要がありisGenderます。どちらを選んでも、誰かが自分の性別が と見なされていることに不満を言う可能性があることに注意してくださいfalse。これが、列挙型がより良いオプションである理由です。

ブール値が不適切である可能性があるもう 1 つの理由は、国によっては、状況によっては性別の開示を要求することが違法であるということです。このため、enum に 3 つのオプションを提供することをお勧めします。3 つ目は、性別が開示されなかったことを保存することです。

于 2012-07-24T21:00:58.900 に答える
3

ブール値は適切ではありません。UNKNOWN でない限り、どちらもデフォルト値ではありません。少なくとも 3 つ、場合によっては 4 つの値が必要です。完全な議論については、この回答を参照してください。

于 2012-07-25T01:12:49.257 に答える
2

Java 1.5 以降、言語は列挙型 ( enum) をサポートしており、この種の問題に最適です。

単純な性別列挙:

public enum Gender {
    M, F, UNKNOWN
}

洗練された性別列挙型:

/**
 * Enumeration for reflecting user's gender.
 * @author naXa!
 */
public enum Gender {
    /** Male. */
    M("Male"),
    /** Female. */
    F("Female"),
    /** Gender is not known, or not specified. */
    UNKNOWN("Unknown");

    private final String name;

    private Gender(String name) {
        this.name = name;
    }

    /**
     * @return The string representation of this element in the enumeration.
     */
    public String getName() {
        return this.name;
    }
}

使用例:

Employee employee = new Employee("John Doe", 23, Gender.M);

のインスタンスenumは定数であり、定数の命名規則に従う必要があることにも注意してください。つまり、すべての文字を大文字にし、後続の単語をアンダースコア文字で区切る必要があります。慣例により、アンダースコア文字は他の場所では使用されません。

于 2015-03-10T14:38:56.763 に答える
1

ここにはいくつか問題があります。まず、if ステートメントでは、1 つの演算子を使用して値fm性別を代入しています。=if (gender == true) または if (gender == false) を行う必要があります。また、true は男性または女性を表し、false は他の性別を表すことをお勧めします。

于 2012-07-24T21:00:38.523 に答える
1

Java 1.5 以降を使用している場合は、強い型付け、便利な/実装に依存しない命名、および拡張性を提供する列挙型を使用できます (使用する必要があります)。

例:

public enum Gender {
    MALE,
    FEMALE,
}

// usage example
myEmployee.setGender(Gender.FEMALE);
于 2012-07-24T21:00:08.740 に答える
0

2 つのアイデア:

isMale1)またはのようなブール値を作成しますisFemale

2)とGenderのみを持つ Enum を作成します。Gender.MALEGender.FEMALE

于 2012-07-24T21:00:12.137 に答える