我有一个类Passengers,它有成员属性String name、int health和带有setter和getter方法的String disease。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开始他的疾病,然后感染了疟疾和寒冷。Bill的disease变量现在应该包含malaria, cold。现在假设用户选择治疗Bill的疟疾。我该怎么做
1)添加疟疾和寒冷
2)只从disease中减去疟疾
每当我试图改变疾病的时候
passengers[index].setDisease() = null;上面写着“错误:Passenger类中的方法setDisease不能应用于给定的类型:
必需:字符串
已找到:无参数“
发布于 2013-03-12 11:40:44
您应该为类提供一个List<String>,比如ArrayList<String>,并将疾病放在这个列表中。
更好的是,创建一个类或疾病枚举,让您的Passenger类使用List<Disease>,避免过度使用String。然后,您可以为该类提供公共的addDisease(Disease disease)和removeDisease(Disease disease)方法。
顺便说一句,上面的类应该命名为Passenger,单数,而不是Passenger,复数,因为它代表单个乘客的概念。
发布于 2013-03-12 11:40:55
我建议让疾病成为一个字符串的Set。
Set<String> diseases = new HashSet<String>();
void addDisease(String disease) {
diseases.add(disease);
}
void removeDisease(String deisease) {
diseases.remove(disease);
}在这种情况下,Set比其他Collections“更好”,因为它们不能保存重复项。
发布于 2013-03-12 12:14:29
对于您的需求,如果您正在使用List,如ArrayList,您可以通过index访问您的元素(疾病名称),但这将允许插入重复的数据(可能会多次添加相同的疾病,这将不必要地增加疾病的数量,并可能出现一些问题)。如果你像HashSet一样使用Set,它将只允许唯一的元素,所以不会出现与重复条目相关的问题,但同时你不能访问particular disease by index (如果你需要这样做,到目前为止,我不知道你的进一步要求)。因此,据我所知,我建议您使用LinkedHashSet(HashSet with Linked approach),它将为您提供先进先出顺序,而不会出现重复插入问题。
https://stackoverflow.com/questions/15352880
复制相似问题