2015-05-01 3 views
-1

У меня есть четыре почти одинаковые петли на Java с различными методами:Объединить четыре петли «для» в одном с различными внутренними методами

int Point; 
for (int i = 0; i < 10; i++) 
{ 
    if (isLeft()) 
     Point = i;  
} 

for (int i = 0; i < 10; i++) 
{ 
    if (isRight()) 
     Point = i; 
} 

for (int i = 0; i < 10; i++) 
{ 
    if (isAbove()) 
     Point = i; 
} 

for (int i = 0; i < 10; i++) 
{ 
    if (isUnder()) 
     Point = i; 
} 

Могу ли я объединить все петли в одном?

+2

Да, вы можете, но на данный момент ваши циклы не действуют, поскольку ваши переменные «Point» не видны вне тела их цикла. – isnot2bad

+0

Спасибо, отредактирован. И как это возможно? –

+0

См. Решение Mureinik. – isnot2bad

ответ

0

Не слишком уверены, что вы пытаетесь сделать, потому что все условия, кажется, изменить значение точки к последнему значению итератора, который 9. , но сниппет может дать вам это.

for (int i = 0; i < 10; i++){ 
    if (isLeft()) 
     int Point = i; 
    if (isRight()) 
     int Point = i; 
    if (isAbove()) 
     int Point = i; 
    if (isUnder()) 
     int Point = i; 
} 

другая версия этой воли совместные все условия

for (int i = 0; i < 10; i++) { 
    if (isLeft() || isRight() || isAbove() ||isUnder()) { 
     Point = i; 
    } 
} 
+0

'int Point = i;' это опечатка, вам нужно отбросить 'int'. – Bathsheba

1

Вы можете приковать условия с || оператором:

for (int i = 0; i < 10; i++) { 
    if (isLeft() || isRight() || isAbove() ||isUnder()) { 
     Point = i; 
    } 
} 
+1

Это не совсем эквивалентно: если «isUnder()» возвращает true в первый раз, а false - остальное время, а «isAbove()» всегда возвращает true, исходный код приведет к «Точке» 0, тогда как этот новый код приведет к тому, что Point будет 9. –

1

Вы не можете объединить петли, если вы хотите, чтобы текущий поток управления будет сохранен.

В настоящее время:

  1. Все четыре функции выполняются 10 раз в каждом
  2. isRight не будет называться, пока isLeft больше не будет называться и т.д.
  3. Point является более сильной функцией результата isUnder чем isAbove и т. д.

Вы можете рассмотреть возможность использования || в операторе if, но я думаю, что вы, вероятно, представите ошибки, считая, конечно, что код в настоящее время работает по назначению.

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