2017-01-26 3 views
1

Also ich bin super neu zu programmieren. Ich habe eine einfache Calc-Klasse erstellt, die 2 Zahlen erhält, obwohl es Konstruktor ist. Ich habe eine calcTotal method erstellt, die diese beiden Zahlen addiert und in eine Variable namens total bringt. Ich habe dann eine printTotal-Methode erstellt, die nichts anderes ist als System.out.println (total);Variable in benutzerdefinierten Klasse druckt immer 0

Wenn ich jedoch ein Objekt in main erstellen und die printTotal-Methode aufrufen, wird immer 0 ausgedruckt. Ich verstehe total wird in meiner Calc-Klasse auf 0 initialisiert. Ich verstehe nicht, wie die berechnete Summe von der calcTotal-Methode an die printTotal-Methode übergeben wird. Wenn ich System.out.println (total) in die calcTotal Methode setze, bekomme ich einen Aufruf der in main ich bekomme die richtige Summe.

Hetes meine Calc Klasse

public class Calc{ 

private int numOne; 
private int numTwo; 
private int total; 

public Calc(int numOne, int numTwo){ 
    this.numOne = numOne; 
    this.numTwo = numTwo; 
} 

    public void calcTotal(){ 

    total = numOne + numTwo; 

} 

    public void printTotal(){ 

    System.out.println(total); 
} 
} 

und mein Haupt

public class HelloWorld{ 

public static void main(String []args){ 

    Calc myCalc = new Calc(3,5); 
    myCalc.printTotal(); 

} 
} 

Ich weiß, dass es ein super Anfänger Frage ist, und es wird wahrscheinlich downvoted erhalten, aber es ist frustrierend mich.

Vielen Dank für jede Hilfe

+1

"* Ich habe eine calcTotal-Klasse *" erstellt. Du hast keine 'Klasse' erstellt. Sie erstellen eine "Methode" calcTotal. – msagala25

+0

Danke Ich habe nicht bemerkt, dass Tippfehler – zsh5032

Antwort

6

Sie rufen nie calcTotal(), die Methode, die die Berechnung der Fall ist, bevor Sie die Druckmethode aufrufen, und so wird die Summe nie berechnet.

Aber unabhängig, sollten Sie nicht zwei Methoden haben wie so, wie dieser Fehler kann leicht durch stattdessen verhindert wird nur calcTotal() Rückkehr des int-Wert, mit und dann der anrufende Code kann es drucken, oder tun, was es mit ihm will .

public int calcTotal() { 
    return numOne + numTwo; 
} 

in Haupt:

Calc myCalc = new Calc(3,5); 
System.out.println("total: " + myCalc.calcTotal()); 
+1

Sollte es nicht ein 'int' zurückgeben? –

+0

@EliSadoff: In der Tat hast du Recht –

+0

Schöne Antwort obwohl! –

3

Sie nie die Gesamt berechnen, bevor es gedruckt wird. Dein Haupt sollte so aussehen.

Sie könnten in Erwägung ziehen, Ihrem Konstruktor die Funktion calcTotal() hinzuzufügen.

public Calc(int numOne, int numTwo){ 
    this.numOne = numOne; 
    this.numTwo = numTwo; 
    calcTotal(); 
} 
+0

Danke für die Antwort, die ich ja aufwertete, da ich nicht mehr als eine richtige wählen kann – zsh5032