在我的任务说明中,陈述了以下内容; “类图,用于更新属性的方法完全缺少一件事。这是因为系统的客户端已决定不允许对其进行更新。但是,我们知道这一要求至少会随着年龄的变化而改变。因此,任务还包括设计和实现一种更新年龄的方法。这样做时,请记住年龄只会增加,而永远不会减少。”
因此,我的问题是我该如何制作一种方法来更新类的属性-在这种情况下会增加年龄? :)
下面还有2个其他要求(所以您知道我为什么要在我的代码中包括它)... “狗的尾巴长度可以用整齐的公式计算: 尾巴长度=ålder⋅vikt10svanslängd=ålder⋅vikt10 该公式适用于除出租车以外的所有犬只。一税总尾长为3.7。由于狗窝的价值是国际性的,因此系统必须正确处理瑞典语“ tax”和英语“ dachshund”。”
这是我的代码:
public class Dog {
private String name;
private String breed;
private int age;
private int weight;
public String getName() {
return name;
}
public String getBreed() {
return breed;
}
public int getAge() {
return age;
}
public int getWeight() {
return weight;
}
public double getTailLength() {
double length;
// Undantag för taxar/dachshunds (alltid svanslängd 3,7).
if (breed.equalsIgnoreCase ("Tax") || breed.equalsIgnoreCase("Dachshund")) {
length = 3.7;
} else {
//Formel för svanslängd
length = (double)(age * weight) / 10;
}
return length;
}
public String toString() {
return String;
}
}
答案 0 :(得分:0)
您应该创建一个set方法
public void setAge(int newAge) {
age = newAge;
}
答案 1 :(得分:0)
您可以添加一种更新年龄的方法
public void updateAge(int age) {
if (age <= this.age) { // use < instead of <= if the age can remain the same
throw new RuntimeException("Invalid age");
}
this.age = age;
}
它验证通过的年龄至少是当前年龄。如果不是,则抛出异常。您可以在此处抛出任何适当的异常。
如果您不想引发异常,则可以让该方法返回一个布尔值以反映更新是否成功。
public boolean updateAge(int age) {
if (age <= this.age) {
return false;
}
this.age = age;
return true;
}
答案 2 :(得分:0)
用于更新属性的方法通常称为Setter。 在Java中,通常每个属性都有一个get / set方法。 因此,您要做的是为这个年龄创建一个二传手。 这是非常基本的Java,强烈建议您在Getters和Setters上进行搜索/阅读,而不要有人告诉您确切的操作(即为您编写代码)。它将对您的理解和学习Java有很大帮助。
我刚刚在Google上进行了搜索,但这是一个可以帮助您的教程示例: https://www.codejava.net/coding/java-getter-and-setter-tutorial-from-basics-to-best-practices
答案 3 :(得分:0)
按照约定,您应该有一个setter
方法来修改值(因为getter
返回值),基本方法是:
public void setAge(int age) {
this.age = age;
}
您可以添加验证,例如ex,如果您只想增加年龄
public void setAge(int age) {
if(age > this.age)
this.age = age;
}
或创建一个oneMoreYear()
方法以增加一个
public void oneMoreYear() {
age++;
}
答案 4 :(得分:0)
这取决于更新的类型。
允许设置任何年龄:
public void setAge(int newAge) {
if (newAge > age) {
this.age = newAge;
}
}
每次通话只能增加一年:
public void increaseAge() {
this.age++;
}
答案 5 :(得分:0)
您可以创建一个方法,该方法可以调用其他名称,例如'addAge',在此方法中,您可以执行addAge,可以在此方法中进行服务
答案 6 :(得分:0)
我认为就像年龄一样,该属性不能更改,但是您必须创建setAge,并且在setAge中,您什么也不做,也不显示皱纹,创建其他方法来增加年龄
答案 7 :(得分:0)
只需保持getter和setter不变-在这方面遵循Java bean规范。 您正在尝试做的事情不仅仅是设置值-例如,对于setter for age属性。在这种情况下,最好有另一种方法,该方法根据您要插入的逻辑来延长使用期限。选择新方法将一如既往地要求拥有适当的Javadoc。 >