Не удается получить правильный вывод из созданного класса (калькулятор заработной платы + комиссии)

Итак, я пишу программу, которая должна брать заработную плату человека (7,25 доллара) и добавлять его комиссию, а затем выдавать общую сумму. Я ввожу всю запрошенную информацию и получаю результат 0.0, что явно неверно. Любая помощь приветствуется, спасибо!! ВОТ ЧТО У МЕНЯ ЕСТЬ В КЛАССЕ ВОДИТЕЛЕЙ:

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    double hours, sales, total;
    DecimalFormat df = new DecimalFormat("$0.00");
    Wages emp1 = new Wages();

    System.out.println("Please enter the hours worked: ");
    hours = input.nextDouble();

    System.out.println("Please the amount of sales: ");
    sales = input.nextDouble();




    System.out.println("Your total pay check wages are: " + df.format(emp1.getEverything()));

}

И ВОТ КЛАСС ЗАРАБОТНОЙ ПЛАТЫ Я СОЗДАЛ:

    public class Wages {

private double PAY_RATE = 7.25;
public double sales, commission, total;
public int hours;

public Wages(){
}
public Wages(double rate,double sales, double total, double commission, int hours){
    this.sales = sales;
    this.total = total;
    this.PAY_RATE = rate;
    this.commission = commission;
    this.hours = hours;
}

public double getSales(){
    return sales;
}

public double getCommission(){
    if(sales >= 1.00 && sales <= 99.99){
        commission = (sales * 0.05);
        return commission;
    }
    else if(sales >= 100.00 && sales <= 299.99){
        commission = (sales * 0.10);
        return commission;
    }
    else if(sales >= 300.00){
        commission = (sales * 0.15);
        return commission;
    }
    return commission;
}
public double getEverything(){
    total = (PAY_RATE * hours) + commission;
    return total;
}

}


person kandaspohn    schedule 12.02.2015    source источник
comment
Вероятно, потому что вы никогда не устанавливали часы работы Wages или продажи.   -  person user253751    schedule 13.02.2015
comment
Итак, я создаю эти два метода набора в моем классе заработной платы? И назвать их в классе водителей?   -  person kandaspohn    schedule 13.02.2015
comment
Это один из способов, да.   -  person user253751    schedule 13.02.2015
comment
Также в getEverything() следует вызывать getComission() вместо комиссии, иначе она тоже не будет установлена   -  person Andrew Alderson    schedule 13.02.2015
comment
Спасибо! Я попробую.   -  person kandaspohn    schedule 13.02.2015
comment
Каким был бы другой способ сделать это?   -  person kandaspohn    schedule 13.02.2015
comment
вы вообще не добавляете часы/продажи в emp1.   -  person eckes    schedule 13.02.2015


Ответы (2)


Вы создали конструктор, который принимает продажи и часы, но вы не использовали этот конструктор и вместо этого вызвали default.

Таким образом, продажи и часы не имеют значения.

person Mike Curry    schedule 13.02.2015

Если бы мне пришлось это сделать, я бы изменил ваш класс заработной платы, включив в него следующее:

public double hours; //You're taking a double for their input, so replace the int

public Wages(double hours, double sales){
    this.sales = sales;
    this.hours = hours;
}

//...

public double getEverything(){
    total = (PAY_RATE * hours) + getCommission();
    return total;
}

и используйте это в драйвере:

System.out.println("Please enter the hours worked: ");
hours = input.nextDouble();

System.out.println("Please the amount of sales: ");
sales = input.nextDouble();

Wages emp1 = new Wages(hours, sales);
person Andrew Alderson    schedule 13.02.2015
comment
зачем мне помещать public double getEverything в класс драйвера? Это необходимо? - person kandaspohn; 13.02.2015
comment
И спасибо всем за вашу помощь и время. Я должен уйти на работу прямо сейчас, но я вернусь позже с прогрессом. Ваше здоровье - person kandaspohn; 13.02.2015
comment
Упс, добавил, что в конец не того раздела, он обязательно должен быть частью класса заработной платы - person Andrew Alderson; 13.02.2015