2016-11-13 8 views
-1

このプログラムでは、ユーザーは2ワード(firstWordとsecondWord)を入力するよう求められます。オブジェクトが作成されると、2つの単語が自動的に画面に表示されます。ifステートメントの使用

firstWordは、whileループを介して画面上の位置を変更するように設定されています。

secondWordは固定位置にとどまります。

firstWordのX位置またはY位置がsecondWordと同じになると、ループを終了します。

=(155、361)

secondWordのXY位置だから例えば、のようなもの:

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

関連する問題