2016-11-13 167 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