2016-11-13 2 views
-1

In diesem Programm wird der Benutzer aufgefordert, 2 Wörter einzugeben (FirstWord und SecondWord). Die beiden Wörter erscheinen automatisch auf dem Bildschirm, sobald das Objekt erstellt wurde.Verwendung von if-Anweisungen

firstWord wird so eingestellt, dass seine Position auf dem Bildschirm über eine while-Schleife geändert wird.

secondWord wird in einer festen Position bleiben.

Ich möchte, dass die Schleife endet, sobald die X-Position oder die Y-Position von FirstWord gleich wie SecondWord ist.

Die XY-Position von secondWord = (155, 361)

So zum Beispiel so etwas wie:

if (word1.xPosition = 155) { 
    break; 
} 

Offensichtlich ist, dass Code falsch, es ist nur Ihnen eine Idee zu geben was ich erreichen möchte.
Also, wie würde ich diese if-Anweisung schreiben?

Mein Code unten eingefügt wird:

public words(String w1, String w2) 
{ 
    // initialise instance variables 
    firstWord = new Text(w1); 
    firstWord.randomizePosition(); 
    firstWord.changeColor("green"); 
    firstWord.changeSize(48); 
    firstWord.makeVisible(); 
    secondWord = new Text(w2); 
    secondWord.setPosition(155, 361); 
    secondWord.changeColor("orange"); 
    secondWord.changeSize(48); 
    secondWord.makeVisible(); 



public void draw() 
{ 
    while(true) { 

    firstWord.randomizePosition(); 

}  
    if(firstWord.xPosition = ){ 

    break;  

} 

} 

Ersetzen Sie die if-Anweisung

+0

Es ist nicht klar, wo genau du steckst. –

+2

'while (true)' wird nie beendet. Ihre App wird eingefroren, wenn Sie das ausführen. –

Antwort

0

ich die Schleife wollen, sobald die X-Position oder Y-Position von Firstword zu beenden, ist die gleiche wie secondWord

while (!(firstWord.getXPosition() == secondWord.getXPosition() || 
      firstWord.getYPosition() == secondWord.getYPosition()) 
{ 
    firstWord.randomizePosition(); 
} 

"Während die erste Position nicht gleich ist al der X- oder Y-Position der zweiten Position ist, ändern Sie die erste Position“


Wenn Sie diese Etiketten auf einer GUI zu zeichnen erwarten, nicht erwarten, ohne Gewinde jede Bewegung, um zu sehen, welche die Elemente neu gezeichnet zwischen bewegt sich.

+0

'equals()' wird hier nicht funktionieren, da er möchte, dass es endet, wenn * entweder * X oder Y gleich sind. Also muss er X und Y immer noch einzeln vergleichen. Und ich bin mir ziemlich sicher, dass er möchte, dass das Zeug seine Position auf dem Bildschirm visuell aktualisiert und nicht nur das fertige Ergebnis zeigt. Das Ganze müsste also in einer Hintergrundaufgabe erledigt werden, die in jeder Iteration der Schleife eine kleine Verzögerung mit sich bringt und außerdem dafür sorgt, dass die Aktualisierungen auf dem UI-Thread ausgeführt werden. –

0

Wenn Sie beide Elemente auf x oder y ausrichten möchten, sollten Sie Ihre while-Schleife ändern:

while(firstWord's X == secondWord's X || firstWord's Y == secondWord's Y) 
    firstWord.randomizePosition(); 

Nach Ihrer Beschreibung, sollte diese Arbeit. Natürlich können Sie jederzeit eine kleine Verzögerung hinzufügen, um die Animation sehen zu können.

+0

Sind Sie sicher, dass das korrekt ist? Ich bekomme immer einen Kompilierungsfehler aufgrund des Apostrophs in den "FirstWords" und "SecondWords" usw. Der Kompilierungsfehler besagt: "nicht geschlossenes Zeichenliteral" –

+0

Oh, ich habe nicht die tatsächliche Java-Formatierung verwendet. Sie müssen es durch etwas wie FirstWord.positionX oder FirstWord.getPosition.getX() ersetzen. (Was auch immer die X- oder Y-Position des Objekts zurückgibt) – Sneling