2017-06-12 18 views
0

Ich bin ein Anfänger in Java, und das mag einfach scheinen, aber ich konnte einfach nicht herausfinden, was ich falsch gemacht habe für unten.Warum ist "int a, b;" während "int c = a-b" nicht funktioniert, wenn ich "a" und "b" Werte gebe?

Ich habe eine Klasse mit 3 ganzen Zahlen a, b und c erstellt.

Dann in der Hauptklasse, ich habe ein Objekt erstellt und gab Werte für a und b. Aber warum wird nicht c berechnet (ich bekomme 0 für das Ergebnis beim Ausdruck der Ergebnisse, wie unten)?

Main:

public class Main122 { 
    public static void main(String[] args) { 
     Temp z = new Temp(8, 7); 
     System.out.println(z.getA()); 
     System.out.println(z.getB()); 
     System.out.println(z.getC()); 
    } 
} 

Ergebnis:

8 
7 
0 

mir bitte helfen, danke!

+2

Feldinitialisierer werden vor dem Hauptteil des Konstruktors ausgeführt, so dass zum Zeitpunkt 'a - b' ausgewertet wird, sind' a' und 'b' immer noch der Standardwert von' 0'. – Andreas

+0

Vielen Dank! – justinj

Antwort

2

Da int hat Standardwert 0, und wenn Sie c erklärt, a und b hatte Wert von 0.

Wenn Sie den Wert ändern möchten c Sie Wert zuweisen möchte:

public Temp(int a, int b) { 
     this.a = a; 
     this.b = b; 
     this.c = this.a - this.b; 
    } 
+0

Danke für Ihre Hilfe! =) – justinj

1

Sie versuchen, den c Wert an seinem Punkt der Deklaration festzulegen. Sie sollten dies nicht für Beispielmitglieder tun. Stattdessen

public class Temp { 
    private int a; 
    private int b; 
    private int c; 

    public Temp(int a, int b) { 
     this.a = a; 
     this.b = b; 
     this.c = this.a - this.b; 
    } 
    ... 
} 

Wenn Sie alles andere unverändert zu lassen, sollten Sie

8 
7 
1 

Mit Ihrem aktuellen Code bekommen, Sie 0 bekommen, weil an der Stelle Sie c = a - b angeben, wird sowohl a und b initialisiert wurden nur auf ihren Standardwert (so dass ihre Standardwerte 0 für int s und 0 - 0 = 0 sind).

+0

Vielen Dank für Ihre Hilfe! – justinj

+0

@justinj Gut zu helfen. Überlege dir, die Antwort zu markieren, die dir geholfen hat und die Frage zu beenden. Prost. –

Verwandte Themen