1

我有一个类Passengers,它有成员属性String name, int health, 和String diseasesetter 和 getter 方法。该disease变量最初将保持null. 这是那节课

public class Passengers
{
    private String name;
    private int health;
    private String disease;

    public Passengers(String _name, int _health, String _disease)
    {
        name = _name;
        health = _health;
        disease = _disease;
    }

    public void setHealth(int _health)
    {
        health = _health;
    }
    public void setDisease(String _disease)
    {
        disease = _disease;
    }

    public String getName()
    {
        return name;
    }
    public int getHealth()
    {
        return health;
    }
    public String getDisease()
    {
        return disease;
    }
}

我想知道的是如何将新字符串添加到此变量中,然后如何删除。例如,一位乘客比尔从null他的疾病开始,然后感染了疟疾和感冒。比尔的disease变量现在应该保持malaria, cold。现在假设用户选择治疗比尔的疟疾。我将如何
1)添加疟疾和感冒
2)从中减去疟疾disease

每当我试图用

passengers[index].setDisease() = null;

它说“错误:类Passengers中的方法setDisease不能应用于给定类型:
必需:
找到字符串:无参数”

4

3 回答 3

3

我建议将疾病设为一组字符串。

Set<String> diseases = new HashSet<String>();

void addDisease(String disease) {
    diseases.add(disease);
}

void removeDisease(String deisease) {
    diseases.remove(disease);
}

Set在这种情况下, s 比其他“更好”,Collections因为它们不能保存重复项。

于 2013-03-12T03:40:55.047 回答
0

你应该给一个类List<String>如 anArrayList<String>并将疾病放在这个列表中。

更好的是,创建一个疾病类或枚举,让您的乘客类使用 aList<Disease>并避免过度使用字符串。然后,您可以为该类提供公共addDisease(Disease disease)removeDisease(Disease disease)方法。

顺便说一句,上面的类应该命名为单数Passenger,而不是复数Passengers,因为它代表单个Passenger 的概念。

于 2013-03-12T03:40:44.057 回答
0

对于您的要求,如果您使用ListlikeArrayList您可以通过 访问您的元素(疾病名称)index,但它会允许插入重复数据(可能会多次添加相同的疾病,这将不必要地增加疾病的数量并且可能会出现一些问题)。如果您使用SetlikeHashSet它将仅允许唯一元素,因此不会出现与重复条目相关的问题,但同时您无法访问 a particular disease by index(如果您需要,截至目前我不知道您的进一步要求)。因此,据我所知,我建议您使用LinkedHashSet(HashSet with Linked approach)它将为您提供 FIFO 订单,而不会出现重复插入问题。

于 2013-03-12T04:14:28.980 回答