有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

if语句在从参数(JAVA)获取getDiscount()时遇到问题

我想从扩展person类的employee类的getter中获得折扣。折扣因工作时间而异。我已经设置了参数。 当我使用setMethods时,我可以得到折扣。e、 g如果我使用

e.setHourlyWorked(56);
System.out.println(e.getHourlyWorked());
System.out.println(e.getDiscount());

我得到了预期的结果

但是我无法从参数本身获取e.getDiscount());,即

    Employee e= new Employee(23, 22,"Nab","Kar","000");
    System.out.println(e.getHourlyWorked());
    System.out.println(e.getDiscount());

我得到0的折扣

人类

    public  class Person {
    //private fields
    private String firstName;
    private String surname;
    private String phoneNumber;
    private int discount;

    public Person(){
    //Default Constructors
    firstName="John";
    surname="SMITH";
    phoneNumber="0000";


    }//constructors with all the inputs 
    public Person(String fn, String sn, String pn){

        firstName=fn;
        surname=sn;
        phoneNumber=pn;
    }

    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String fn) {
        firstName=fn;
    }


    public String getSurname() {
        return surname;
    }

    public void setSurname(String sn) {
        surname = sn;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String pn) {
        phoneNumber = pn;
    }


    @Override
    public String toString(){
        return getFirstName()+" "+getSurname()+" "+getPhoneNumber();
    }

雇员阶级

    package lollyShopSystem;

    public class Employee extends Person {
    private double hourlyWorked;
    private double wage;
    private int dis;

    public Employee(){
    //Default Constructors
    hourlyWorked=30;
    wage=34;

    }
    public Employee(double hourlyWorked, double wage, String fn, String sn, String pn) {
        super(fn, sn, pn);
        this.hourlyWorked = hourlyWorked;
        this.wage = wage;        
    }

    public double getHourlyWorked() {
        return this.hourlyWorked;

    }

    public void setHourlyWorked(double hourlyWorked) {
        this.hourlyWorked = hourlyWorked;

        if (this.hourlyWorked<=20){
            this.dis=5;
    }
        else if (this.hourlyWorked>20 && this.hourlyWorked<=30){
            this.dis=10;
    }
        else {
            this.dis=15;
        }

    }

    public double getWage() {
        return this.wage;
    }

    public void setWage(double wage) {
        this.wage = wage;


    }


public int getDiscount(){
    return this.dis;
}
}

共 (1) 个答案

  1. # 1 楼答案

    使用构造函数分配hourlyWorked不会改变折扣。您可以用setHourlyWorked函数替换字段的赋值

    public Employee(double hourlyWorked, double wage, String fn, String sn, String pn) {
        super(fn, sn, pn);
        setHourlyWorked(hourlyWorked);
        this.wage = wage;        
    }