public void setSalary(MarriedPerson spouse){
if(getSex() != spouse.getSex()) { setSalary(getSalary() + spouse.getSalary());
}
}
それでは、私は、オブジェクトの変数給与の値を変更してやっていますオブジェクトが他のものと反対のセックスをしているとき(私はあなたがカップルであるかのように実際にそれらを追加しています)。とにかく起きているのは、最初のオブジェクトの給与が2つの給与の合計になり、メソッドの呼び出し後に給与が永久に変更されたということです。私がやりたいことはこれまでずっと変わっているのではなく、私がそれを印刷するだけです。だから、
MarriedPerson mp1 = new MarriedPerson("Tront", "Betty", 31, 980.5f,Person.FEMALE, 3);
MarriedPerson mp2 = new MarriedPerson("Tront", "Kirk", 31, 2080f,Person.MALE, 2);
MarriedPerson mp3 = new MarriedPerson("Tront", "Sonia", 31, 600f,Person.FEMALE, 0);
mp1.printinfo();
mp2.printinfo();
mp3.printinfo();
//sal = mp1.getSalary();
mp1.setSalary(mp2);
mp1.printinfo();
//mp1.setSalary(sal);
mp1.setSalary(mp3);
mp1.printinfo();
mp1.setSalary(mp2.getSalary());
mp1.printinfo();
を、私は、コマンドのコメントを外す場合は、プログラムが正常に動作しますが、私は何があっMP1オブジェクトの給与を別の値、SALを作成して保存される。ここでは、メインメソッドのコードです。そして、setSalary
メソッドを呼び出すことによって動作します。私はより適切な方法を望む、それは毎回動作する。
これはこの質問の範囲外ですが、カップルは同じ性別である可能性があります。私はあなたが "夫婦"の定義を再考すべきだと思う。 – Dethariel
よく、本当。私は先生に知らせる。 – FloatsAreFun