2016-11-13 4 views
-1

Dans ce programme, l'utilisateur doit saisir 2 mots (firstWord et secondWord). Les deux mots apparaîtront automatiquement à l'écran une fois l'objet créé. FirstWord est réglé pour changer sa position sur l'écran via une boucle while. SecondWord restera dans une position fixe.Utilisation des instructions if

Je veux que la boucle se termine une fois que la position X ou la position Y du premier mot est la même que la seconde.

La position XY de secondWord = (155, 361)

Ainsi, par exemple, quelque chose comme:

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

De toute évidence, ce code est erroné, il est juste de vous donner une idée de ce que je veux accomplir.
Alors, comment j'écrirais cette instruction if?

Mon code est collé ci-dessous:

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;  

} 

} 

Remplacer l'instruction if

+0

On ne sait pas exactement où vous êtes coincé. –

+2

'while (true)' ne sortira jamais. Votre application va se bloquer si vous l'exécutez. –

Répondre

0

Je veux la boucle pour mettre fin une fois que la position X ou la position Y de FirstWord est le même que secondWord

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

"Alors que la première position ne correspond pas al la deuxième position de la position X ou Y, modifier la première position »


Si vous prévoyez de tirer ces étiquettes sur une interface graphique, ne vous attendez pas à voir un mouvement sans fil qui redessine les éléments entre se déplace.

+0

'equals()' ne fonctionnera pas ici, puisqu'il veut que cela se termine si * soit * X ou Y sont les mêmes. Il a donc encore besoin de comparer X et Y individuellement. Et je suis assez sûr qu'il veut que les choses mettent à jour visuellement sa position sur l'écran et ne montrent pas seulement le résultat fini. Donc, le tout devrait être fait dans une tâche d'arrière-plan qui comprend un petit retard dans chaque itération de la boucle, ainsi que prendre soin d'effectuer les mises à jour sur le thread de l'interface utilisateur. –

0

Si vous souhaitez aligner les deux éléments sur x ou y, vous devez changer votre boucle while pour:

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

Selon votre description, cela devrait fonctionner. Bien sûr, vous pouvez toujours ajouter un petit délai pour pouvoir voir l'animation, si vous le souhaitez.

+0

Etes-vous sûr que c'est correct? Je continue d'obtenir une erreur de compilation en raison de l'apostrophe dans le "firstWord" et "secondWord" etc. L'erreur de compilation indique: "littéral caractère non fermé" –

+0

Oh, je n'ai pas utilisé la mise en forme Java réelle. Vous devez le remplacer par quelque chose comme firstWord.positionX, ou firstWord.getPosition.getX(). (Tout ce qui renvoie la position X ou Y de l'objet) – Sneling