在构造函数中作为参数输入时无法解析符号

时间:2018-08-15 04:49:55

标签: java oop

作为大学论文实验的一部分,我正在从事编码任务,并且坚持设置我的构造函数和几个布尔值,这些布尔值将从构造函数中提取年龄变量而不使用另一个数据字段(年龄)。谁能阐明为什么为什么年龄是构造函数中的一个参数,但为什么我无法在布尔值中解析这些符号(年龄)?

UML图:

  • 名称:字符串
  • child:boolean
  • 学生:布尔值

  • Customer(nameIn:String,age:int,studentIn:boolean)
  • getName():字符串
  • isChild():布尔值
  • isStudent():布尔值

这是到目前为止的代码:

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
}

请帮助!现在被困了几个小时!

5 个答案:

答案 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仅可在构造函数中访问。

为什么不移动条件逻辑并在构造函数中设置childstudent的值,并像使用name一样提供简单的获取方法?

您的条件也有问题-您将<=>=混合使用,以使这些条件永远无法评估为真。

答案 3 :(得分:0)

在以下代码中:

private boolean isChild() {
    if (age <= 5 && age >= 17)
        return child;
}

并非所有路径都返回值。您必须在构造函数中为childstudent设置变量。只要您可以将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 + "]";
    }

}

MainP:

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