作为大学论文实验的一部分,我正在从事编码任务,并且坚持设置我的构造函数和几个布尔值,这些布尔值将从构造函数中提取年龄变量而不使用另一个数据字段(年龄)。谁能阐明为什么为什么年龄是构造函数中的一个参数,但为什么我无法在布尔值中解析这些符号(年龄)?
UML图:
这是到目前为止的代码:
public class Customer {
/**Data Field declarations */
String name;
boolean child;
boolean student;
boolean booked;
/** Contstructor for the customer
* @param nameIn, age and is student
*/
public Customer (String nameIn, int age, boolean studentIn) {
this.name = nameIn;
this.student = studentIn;
} //end method
/**Accessor method to get name of customer */
public String getName(){
return name;
}//end method
/**Boolean test method to check if child */
private boolean isChild() {
if (age <= 5 && age >= 17)
return child;
}//end method
/**Boolean test method to check if student */
private boolean isStudent() {
if (age <= 16 && age >= 18)
return student;
}//end method
}
请帮助!现在被困了几个小时!
答案 0 :(得分:0)
进行测试,以了解给定年龄的客户在构造函数中是否是子级。如果将其设置为true,则为false。学生也是如此。 然后,您可以重写isChild()和isStudent()函数,以便它返回类的属性值。
答案 1 :(得分:0)
在isChild()
和isStudent()
方法中,您不会传递任何age参数。您应该在这两个方法中都传递一个int age
参数,并将布尔值设置为child = isChild(age)
和student = isStudent(age)
。最后,它看起来应该像这里的hastebin:https://hastebin.com/nowopokuyu.java。希望这会有所帮助!
答案 2 :(得分:0)
无法在布尔方法中解析age
变量的原因是age
仅可在构造函数中访问。
为什么不移动条件逻辑并在构造函数中设置child
和student
的值,并像使用name
一样提供简单的获取方法?
您的条件也有问题-您将<=
和>=
混合使用,以使这些条件永远无法评估为真。
答案 3 :(得分:0)
在以下代码中:
private boolean isChild() {
if (age <= 5 && age >= 17)
return child;
}
并非所有路径都返回值。您必须在构造函数中为child
和student
设置变量。只要您可以将isChild
用作访问器,就可以将它更改为此hastebin中的样式:https://hastebin.com/oqiqobayuw.java
edit:对于每个比较,>=
和<=
也被翻转。
答案 4 :(得分:0)
您必须在构造函数中设置布尔值(即使用一种评估年龄的方法),然后使用public方法访问这些属性。
public class Customer {
private String name;
private boolean child, student;
public Customer(String nameIn, int age, boolean studentIn) {
this.name = nameIn;
this.student = studentIn;
this.child = isChild(age);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
private boolean isChild(int age) {
return (age >= 5 && age <= 16);
}
public boolean isStudent() {
return student;
}
public boolean isChild() {
return child;
}
@Override
public String toString() {
return "Customer [name=" + name + ", child=" + child + ", student=" + student + "]";
}
}
public class MainP {
public static void main(String[] args) {
Customer c1 = new Customer("c1", 5, true);
System.out.println(c1.getName() + " " + c1.isChild() + " " + c1.isStudent());
Customer c2 = new Customer("c2", 50, false);
System.out.println(c2.getName() + " " + c2.isChild() + " " + c2.isStudent());
}
}
c1 true true
c2 false false