2010-04-06 5 views
2

Итак, технически логическое значение имеет значение True (1) или False (0) ... как я могу использовать логическое значение в цикле?use boolean value for loop

так что если FYEProcessing ложна, запустить этот цикл один раз, если FYEProcessing правда, запустить его дважды:

for (Integer i=0; i<FYEProcessing; ++i){ 
    CreatePaymentRecords(TermDates, FYEProcessing);  
} 
+0

Как примечание стороны, если вы ищете логическое значение внутри цикла, вы можете использовать 'while', но это не похоже на работу с что вам нужно. –

+1

Nit: Я думаю, что ваш «i

+1

Вы также должны использовать int вместо Integer, хотя вы никогда не получаете доступ к переменной «i». Использование Integer просто увеличивает накладные расходы без каких-либо причин. –

ответ

7

Так технически логическое значение ИСТИНА (1) или ложь (0)

Это не относится к Java. Вы не можете использовать целое число вместо булевого выражения в условном выражении, то есть if (1) {...} не является законным.

Вы лучше просто делать это последовательно, а не пытаться использовать какой-то цикл стратегии, чтобы избежать две линии, которые называют CreatePaymentRecords()

CreatePaymentRecords(TermDates, FYEProcessing); 
if (FYEProcessing) { 
    //run again 
    CreatePaymentRecords(TermDates, FYEProcessing); 
} 
+0

спасибо, что будет работать ... с небольшой модификацией, мне нужно, чтобы createPaymentRecords вводил 0 в первый раз и 1 второй раз, поэтому мне пришлось бы усердно код значения ... – Leslie

-1

, если вы просто хотите, чтобы выполнить это, пока булево является определенное значение затем использует цикл do или while.

do { CreatePaymentRecords(TermDate, FYEProcessing); } while (FYEProcessing); 
+0

Если CreatePaymentRecords не обновляет значение FYEProcessing (нам не сказали), то этот цикл никогда не выйдет. –

+0

задан вопрос «как я могу использовать логическое значение в цикле?» мой ответ информативен. Возможно, автор действительно знает о do или while loop. Использование сообщения if не является кодом, который большинство людей хотели бы отлаживать. –

7
for (int i=0; i < (FYEProcessing ? 2 : 1); ++i){ 
    CreatePaymentRecords(TermDates, FYEProcessing);  
} 
1

Для цикла, который будет использовать логическое значение истина/ложь для условия, просто использовать do {...} while (condition) или while (condition) {...}. Первый будет запускаться хотя бы один раз, а затем проверить условие. Второй будет работать только в том случае, если условие было первоначально истинным.

0

Я думаю, что мы должны стремиться сделать код понятным, и мне трудно думать, где «булевая петля» понятна. Попытка использовать «логическую петлю» может показаться скользкой в ​​коде, но я думаю, что это умаляет понятность и ремонтопригодность кода.

Я дистиллированная, что вы описали:

так что если FYEProcessing ложна, запустить этот цикл один раз, если FYEProcessing правда, запустить его дважды

в

так если FYEProcessing является False, запустите этот цикл один раз [с ложью], если FYEP обрабатывает значение true, дважды запустите его [с ложным, затем true]

или

запустить этот цикл один раз с ложной. Если FYEProcessing верно, запустите его снова с истинным

CreatePaymentRecords(TermDates, false); 
if (FYEProcessing) { 
    CreatePaymentRecords(TermDates, true); 
}