2016-04-08 7 views
0

sein, dass der Code in der Methode ist, dass der ursprüngliche Wert ändert:Ändern der Wert der Variablen könnte knifflig-Java

public void setSalary(MarriedPerson spouse){ 
if(getSex() != spouse.getSex()) { setSalary(getSalary() + spouse.getSalary()); 
} 
} 

Also, was ich tue, um den Wert des variablen Gehalts eines Objekts zu ändern wenn das Objekt das andere Geschlecht hat als das andere (ich füge sie tatsächlich hinzu, wie du siehst, als wären sie ein Paar). Jedenfalls ist das erste Sachgehalt jetzt die Summe der 2 Gehälter und nach dem Methodenaufruf ändert sich das Gehalt permanatelly. Was ich tun möchte ist, es nicht für immer zu ändern, sondern nur für diesen Anruf, nur damit ich es ausdrucken kann. Hier ist der Code in der Hauptmethode:

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(); 

Also, wenn ich die Befehle das Programm funktioniert gut, Kommentar-, aber was ich tun ist, einen anderen Wert erstellen, die sal und speichern das Gehalt von mp1 Objekt gibt. Und durch den Aufruf der setSalary Methode funktioniert es. Ich möchte jedoch einen angemesseneren Weg, der jedes Mal funktioniert.

+0

, die aus Rahmen dieser Frage ist, sondern Paare könnten gleichgeschlechtlichen sein. Ich denke, Sie sollten Ihre Definition von "Paar" – Dethariel

+0

gut überdenken, wahr. Ich werde den Lehrer wissen lassen. – FloatsAreFun

Antwort

0

Warum sind Sie einen Setter in erster Linie verwenden, wenn Sie nicht wollen, ändern Sie den Wert?

Eine richtige Lösung hängt davon ab, was Ihre größere Bild ist.

Sie konnten die verheiratete Person Set mit neuem setMarriedPerson() die Ehe zum Ausdruck bringen und eine refeence an die erste Instanz zur Verfügung stellen. Und dann später etwas wie printCoupleInfo() verwenden, um kombinierte Werte auszugeben.

Wenn Sie wirklich in kombinierten Gehalt nur daran interessiert sind, dann wird ein neues coupleSalary Feld Ihren Bedürfnissen passen könnte. (Initialized auf setCoupleSalary() auf den gleichen wie Gehalt bei Bedingung combinating ausfällt und die Summe, wenn es hält.

Oder wenn diese nur drucken es ist Ihr Hauptanliegen, dann bietet eine `printCoupleSalary()‘ Methode das wird eine weitere MarriedPerson und Ausgänge entsprechend.

+0

außer den Kommentaren ist der Code gegeben und ich muss es für die Excerise (College) verwenden. Also ich denke, ich muss die Setter verwenden @ rpy – FloatsAreFun

+0

Aber dann, was sollen Sie mit der Übung? Einfach nur gucken wäre es bestimmt nicht. SO, ist die Signatur der Klasse "fixed" oder auch die Implementierung der Methoden? Oder vielleicht sollten Sie neue Felder einführen? – rpy

+0

Die einzige Möglichkeit, die Summe zu drucken und kein Feld zu ändern, wäre, die Summe mit der Methode zu drucken. – rpy

0

Sie keine setSalary() -Methode erstellen müssen hier, wenn Sie nicht das Gehalt Attribut des Objekts ändern möchten.

Direkt können Sie den Wert drucken Wenn die Bedingung innerhalb der printInfo() -Methode selbst erfüllt ist, ist der Lohn die Summe der beiden Gehälter

Es wird nur die Summe von zwei Gehältern gedruckt, wenn die Bedingung erfüllt ist, ohne den Gehaltswert des Objekts zu aktualisieren.

Verwandte Themen