私はメインクラスと従業員クラスを持っています。私の目標は、2番目のテストでは、時間単位の入力レートが-20であることから、「賃金はマイナスにはならない」と返すことです。代わりに、それは総ドルをマイナスにしています。何を修正する必要がありますか?私は自分の問題がスローキャッチステートメントのどこかにあるように感じます。エラーはありませんが、私の見積もりは表示されません。あなたがすることができますまたはコンストラクタ内部例外のロジックを置く、またはあなたが例外をチェックして、ゲッターを使用するために使用しているパラメータなしのコンストラクタを作成することができ、ここで私は考えることができる2つのオプションがありget setステートメントをスローしてキャッチ
package employee;
public class Main {
public static void main(String[] args) {
Employee ryan = new Employee("Ryan", "Smith", 40, 20);
System.out.println("Test #1");
System.out.println(ryan.getFirstName() + " " + ryan.getLastName() + ", worked " + ryan.getHoursWorked() + " hours and earned $"
+ ryan.getHoursWorked() * ryan.getWage());
Employee hayden = new Employee("Hayden", "Moore", 20, -10);
System.out.println("Test #2");
System.out.println(hayden.getFirstName() + " " + hayden.getLastName() + ", worked " + hayden.getHoursWorked() + " hours and earned $"
+ hayden.getHoursWorked() * hayden.getWage());
}
}
package employee;
public class Employee {
private String firstName, lastName;
int hoursWorked, wage;
public Employee(String firstName, String lastName, int hoursWorked, int wage) {
this.firstName = firstName;
this.lastName = lastName;
this.hoursWorked = hoursWorked;
this.wage = wage;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setHoursWorked(int hoursWorked) {
this.hoursWorked = hoursWorked;
}
public int getHoursWorked() {
return hoursWorked;
}
public void setWage(int wage) {
if (wage < 0) {
try {
throw new Exception("Wage cannot be negative");
} catch (Exception e) {
e.printStackTrace();
}
} else
this.wage = wage;
}
public int getWage() {
return wage;
}
}
セッターの賃金の有効性をチェックしますが、このセッターは決してどこでも呼び出されません。コンストラクタで負の賃金を渡しますが、コンストラクタは賃金を検証しません。また、例外をスローしてすぐにキャッチすることは意味をなさない。例外の全ポイントは、メソッドの**呼び出し側**に何かが間違っていることを警告することです。セッターで例外をキャッチしないでください。適切な実行時例外:IllegalArgumentExceptionを使用します。 –
なぜ例外をスローしてすぐにキャッチしますか? – tkausl
1.コンストラクタを読む 2.ソースコードをデバッグしてください 3. getterとsetterのtry/catchを避け、検証でinitメソッドを使用してください –