Member 13926135 Ответов: 1

Создание нового подкласса работника


(Создание нового подкласса Employee) Другие типы работников могут включать наемных работников, которым платят фиксированную еженедельную зарплату, сдельщиков, которым платят по количеству произведенных ими изделий, или часовых работников, которым платят почасовую заработную плату с полуторачасовой-в 1,5 раза больше почасовой заработной платы-за часы, отработанные более 40 часов.
Create class HourlyEmployee that inherits from class Employee (Exercise 9.14) and has instance variable hours (a double) that represents the hours worked, instance variable wage (a double) that represents the wages per hour, a constructor that takes as arguments a first name, a lastname, a social security number, an hourly wage and the number of hours worked, set and get methods for manipulating the hours and wage, an earnings method to calculate an HourlyEmployee’s earnings based on the hours worked and a toString method that returns the HourlyEmployee’s String representation. Method setWage should ensure that wage is nonnegative, and setHours should ensure that the value of hours is between 0 and 168 (the total number of hours in a week).
Используйте class HourlyEmployee в тестовой программе, аналогичной приведенной на рис. 9.5

Что я уже пробовал:

HourlyEmployee.java
публичный класс HourlyEmployee расширяет штат сотрудников{

частные двойные часы работы;
частная двойная зарплата;

HourlyEmployee(строка имя, строка фамилия, инт ССН, двойные часы, двойной заработной платы){
супер();
супер.setFirstname(имя);
super.setLastname(фамилия);
супер.setSsn(ССН);
этот.часы=часы;
это.заработная плата=заработная плата;
}

общественные двойной getHours() {
часы возврата;
}

public void setHours(двойные часы) {
если(часы>=0 || часы <= 168) {
этот.часы = часы;
}
}

публичные двойные getWages() {
возврат заработной платы;
}

общественные пустоты setwages(двойная заработная плата) {
если(заработная плата>=0) {
это.заработная плата = заработная плата;
}
}

публичный двойной totalEarning(){
if(this.getHours()<=40){
вернуть (это.getHours() * это.getWages());
}еще{
Двойной час = this.getHours() - 40;
двойная сумма = (40 * this.getWages()) + час * (зарплата * 1.5);
вернуться общий;
}
}

@Ручная коррекция
публичная строка toString() {
возвращение "имя: "+ супер.методы getfirstname() + "фамилия:" + супер.getLastname() + " количество отработанных часов: "+ это.getHours() + "зарплата почасовая:" + это.getWages() + "общая сумма заработной платы:" + это.totalEarning();
}
}
main.java
импорт java.util.Сканер;

основных публичных класс {
публичный статический пустота главный(строка[] аргументы) {
Scanner SC = новый сканер(System.in);

Строка firtsname,lastname;
инт ССН;
двухместный часов;
двойная зарплата;

System.out.println("введите имя пользователя: ");
firtsname = sc.next();
System.out.println("введите фамилию: ");
фамилия = sc.next();
System.out.println("введите SSN: ");
ССН = СК.nextInt();
System.out.println("введите часы: ");
часы = sc.nextDouble();
System.out.println("введите заработную плату: ");
заработная плата = sc.nextDouble();

HourlyEmployee он = новый HourlyEmployee(firtsname,фамилия,паспортные данные,номер часов,заработная плата);

Системы.из.код println(он.метод toString());
}
}

OriginalGriff

И что же?
Что он делает такого, чего вы не ожидали, или не делает того, что вы сделали?
Где ты застрял?
Какая помощь вам нужна?

Richard MacCutchan

Не ошибаюсь ли я, думая, что есть что-то неправильное в широком использовании double наберите в последнее время вопросы программирования? Я могу только предположить, что это то, чему их учат.

1 Ответов

Рейтинг:
0

Richard MacCutchan

public void setHours(double hours) {
if(hours>=0 || hours <= 168) {
this.hours = hours;
}

Здесь вы использовали логический соединитель или, Поэтому, если часы больше или равны нулю, то это значение является приемлемым. Таким образом, значение 5000 также было бы приемлемым. И если значение меньше нуля, или меньше, или равно 168, это было бы приемлемо, поэтому значение -99 будет работать. Вы должны переработать метод, чтобы проверить, что значение больше или равно 0 и меньше 169. Вы также должны добавить некоторые действия для случая, когда номер не является действительным.