использовать логическое значение для цикла - PullRequest
2 голосов
/ 06 апреля 2010

То есть технически логическое значение - True (1) или False (0) ... как я могу использовать логическое значение в цикле?

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

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

Ответы [ 5 ]

7 голосов
/ 06 апреля 2010
for (int i=0; i < (FYEProcessing ? 2 : 1); ++i){
   CreatePaymentRecords(TermDates, FYEProcessing);      
}
7 голосов
/ 06 апреля 2010

То есть технически логическое значение True (1) или False (0)

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

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

CreatePaymentRecords(TermDates, FYEProcessing);  
if (FYEProcessing) {
    //run again
    CreatePaymentRecords(TermDates, FYEProcessing);  
}
1 голос
/ 06 апреля 2010

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

0 голосов
/ 06 апреля 2010

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

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

поэтому, если FYEProcessing равен False, запустите этот цикл один раз, если FYEProcessing - true, запустите его дважды

в

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

или

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

CreatePaymentRecords(TermDates, false);
if (FYEProcessing) {
    CreatePaymentRecords(TermDates, true);
}
0 голосов
/ 06 апреля 2010

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

do { CreatePaymentRecords(TermDate, FYEProcessing); } while (FYEProcessing);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...