2016-11-13 9 views
-1

В этой программе пользователю будет предложено ввести 2 слова (firstWord и secondWord). Эти два слова будут автоматически отображаться на экране после создания объекта.Использование операторов if

firstWord настроен на изменение своего положения на экране через цикл while.

secondWord останется в фиксированном положении.

Я хочу, чтобы цикл заканчивался, как только позиция X или позиция Y первого слова совпадают с secondWord.

Положение XY из secondWord = (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;  

} 

} 

Заменить, если заявление

+0

Непонятно, где именно вы застряли. –

+2

'while (true)' никогда не выйдет. Ваше приложение замерзнет, ​​если вы запустите это. –

ответ

0

Я хочу, чтобы цикл до конца один раз в положение X или Y позиции firstWord такая же, как secondWord

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

«В то время как первая позиция не равна equ аль X второй позиции или Y положение, изменить первую позицию»


Если вы ждете, чтобы сделать эти метки на GUI, не следует ожидать, чтобы увидеть любое движение без Thread перерисовывающих элементов между движется.

+0

'equals()' не будет работать здесь, так как он хочет, чтобы он заканчивался, если * либо * X, либо Y одинаковы. Поэтому ему все равно нужно сравнивать X и Y в отдельности. И я уверен, что он хочет, чтобы материал визуально обновлял свою позицию на экране, а не просто показывал конечный результат. Таким образом, все это должно быть сделано в фоновом задании, которое включает небольшую задержку в каждой итерации цикла, а также заботу о выполнении обновлений в потоке пользовательского интерфейса. –

0

Если вы хотите, чтобы выровнять оба элемента на х или у, вы должны изменить время цикла для:

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

По вашему описанию, это должно работать. Конечно, вы всегда можете добавить небольшую задержку, чтобы иметь возможность увидеть анимацию, если хотите.

+0

Вы уверены, что это правильно? Я продолжаю получать ошибку компиляции из-за апострофа в «firstWord» и «secondWord» и т. Д. Ошибка компиляции гласит: «незамкнутый символ литерала» –

+0

О, я не использовал фактическое форматирование Java. Вам нужно заменить его чем-то вроде firstWord.positionX или firstWord.getPosition.getX(). (Независимо от того, что возвращает X или Y позиции объекта) – Sneling

 Смежные вопросы

  • Нет связанных вопросов^_^