2017-10-07 1 views
-2

Sorry, wenn das dumm ist, aber ich bin neu in Java.Siehe Wert innerhalb des Konstruktors?

Ich bin ein bisschen fest auf versucht, einen Wert zuweisen, um eine Variable, die durch einen Konstruktor definiert ist aber auf den Wert außerhalb des Konstruktors verweisen.

Der Code-Snippet, wo ich bin stecken ist:

private int x; 
private int y; 

public Finish(int i, int j) { 

    this.x = i; 
    this.y = j; 

} 

public int getY() { 
    return this.y; 

} 

public int getX() { 
    return this.x; 

Also im Grunde in der Hauptdatei ein neues Objekt ‚Fertig stellen‘ wird mit seiner ursprünglichen Koordinaten erstellt (das Wesen int i und int j). Ich muss dann diese Koordinaten den Methoden getY und getX hinzufügen, damit ich ein Objekt auf sie zubewegen kann. Das Problem ist, wenn ich in den get-Methoden auf x oder y verweise, verweist es auf die ursprüngliche Deklaration der Variablen und hat daher den Wert Null, anstatt den Wert zu betrachten, der ihm im Konstruktor zugewiesen wurde. Irgendwelche Ideen, wie man int i und int j in den get Methoden benutzt? Vielen Dank.

EDIT:

this.finish = new Finish(this.canvasWidth/2, Math.abs(rng.nextInt()) % this.canvasHeight); 

Dies ist der Code in der Hauptdatei, es das Zielobjekt zu schaffen und die Angabe die Anfangsposition davon (this.canvasWidth/2 ist variabel und i Math.abs (RNG. nextInt())% this.cancasHeight ist variabel j)

Als solche, in finish.java Ich erzähle es die Position basierend auf int i und int j, aber dann bleiben die Methoden getX und getY immer noch 0.

+3

Was Sie hier zeigen, ist korrekt. Zeigen Sie uns, wie Sie es verwenden. –

+4

Sie würden nur 'x' und' y' als 0 erhalten, wenn Sie 0 in den Konstruktor übergeben. – Tom

+0

Veröffentlichen Sie ein [mcve], das wir verwenden können, um Ihr Problem zu reproduzieren. Der Code, den Sie bereits geschrieben haben, ist in Ordnung, also muss das Problem in dem Code sein, der den obigen Code aufruft. –

Antwort

0

Was Sie versuchen zu tun ist nicht machbar, denn sobald das Programm beendet wird t des Konstruktors, i und j sind nicht im Geltungsbereich.

Der Code, den Sie hier haben, ist richtig, hier ist ein Beispiel, wie man es benutzt:

foo = new Finish(100, 200) 
System.out.println(foo.getX()) #prints 100 
System.out.println(foo.getY()) #prints 200 

würde ich jedoch vorschlagen, dass Sie i und j-x und y so dass die Variablennamen ändern wäre für den Endbenutzer intuitiver.

Verwandte Themen