2016-11-13 224 views
-1

在此程序中,用戶將被要求輸入2個單詞(firstWord和secondWord)。一旦對象被創建,這兩個單詞將自動出現在屏幕上。使用if語句

firstWord設置爲通過while循環更改其在屏幕上的位置。

secondWord將保持固定位置。

我希望循環結束,一旦firstWord的X位置或Y位置與secondWord相同。

secondWord的XY位置=(155,361)

因此,舉例來說,像這樣:

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

顯然,該代碼是錯誤的,它只是給你 的想法我想要達到的目標。
那麼,我會如何寫這個if語句?

我的代碼粘貼如下:

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;  

} 

} 

更換if語句

+0

目前尚不清楚你在哪裏卡住。 –

+2

'while(true)'永遠不會退出。如果你運行該程序,你的應用程序將凍結 –

回答

0

想在循環結束後的X位置或firstWord的Y位置是一樣的secondWord

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

「雖然第一個位置不等於人的第二位置的X或Y位置,改變第一位置」


如果你期待畫上一個GUI這些標籤,不希望看到任何動靜而沒有重繪之間的元素的主題移動。

+0

'equals()'在這裏不起作用,因爲如果* X或Y是相同的,他希望它結束​​。所以他仍然需要單獨比較X和Y.而且我很確定他希望這些東西在屏幕上直觀地更新它的位置,而不僅僅是顯示完成的結果。所以整個事情必須在後臺任務中完成,包括循環的每次迭代中的一小段延遲,以及在UI線程上執行更新。 –

0

如果要對齊的X或Y兩種元素,你應該while循環更改爲:

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

根據你的描述,這應該工作。當然,如果你願意的話,你總是可以添加一個小的延遲來看到動畫。

+0

你確定這是正確的嗎?由於「firstWord's」和「secondWord's」等中的撇號,我不斷收到編譯錯誤。編譯錯誤指出:「未關閉的字符文字」 –

+0

哦,我沒有使用實際的Java格式。你需要用firstWord.positionX或firstWord.getPosition.getX()來代替它。 (無論返回對象的X或Y位置) – Sneling