2010-04-06 67 views
2

所以技術上布爾值爲True(1)或False(0)...我如何在循環中使用布爾值?使用循環的布爾值

所以如果FYEProcessing爲False,運行這個循環一次,如果FYEProcessing是真實的,運行它兩次:

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

再次運行它作爲一個側面說明,如果你正在尋找一個布爾值在循環中,你可以使用'但似乎while'不工作你需要什麼。 – 2010-04-06 19:07:50

+1

Nit:我認爲您的「我 2010-04-06 19:35:27

+1

你也應該使用int而不是Integer,儘管你永遠不會訪問'i'變量。使用Integer只是無意間增加開銷。 – 2010-04-06 19:37:51

回答

7

所以技術上是一個布爾值是真(1)或FALSE(0)

在Java中這不是真的。您不能在條件中使用整數代替布爾表達式,即if (1) {...}是不合法的。

你是剛剛做這個順序,而不是試圖使用某種循環策略,以避免兩行其稱之爲CreatePaymentRecords()

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

之間沒有任何關係,這可以起作用......稍作修改,我需要createPaymentRecords第一次輸入0,第二次輸入1,所以我必須努力編碼值... – Leslie 2010-04-06 19:08:22

-1

如果您只是想只要布爾是執行這更好一個特定的值然後使用do或while循環。

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

除非CreatePaymentRecords更新FYEProcessing的值(我們沒有被告知),否則這個循環將永遠不會退出。 – 2010-04-06 19:12:53

+0

給出了「我怎樣才能在循環中使用布爾值?」我的回答是信息。也許作者確實知道do或while循環。發佈的if語句不是大多數人想要調試的代碼。 – 2010-04-06 23:59:25

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

爲一個循環,將使用一個true/false爲條件,只需使用do {...} while (condition)while (condition) {...}。第一個將始終運行至少一次,然後檢查條件。只有當條件最初爲真時,第二個纔會運行。

0

我認爲我們應該努力使代碼清晰易懂,並且我很難考慮「布爾循環」的清晰位置。嘗試使用「布爾循環」在代碼中可能看起來更加清晰,但我認爲這會降低代碼的可理解性和可維護性。

我提煉你所描述的:

所以如果FYEProcessing爲False,運行這個循環一次,如果FYEProcessing是真實的,運行它兩次,

所以如果FYEProcessing爲False,則運行此循環一次[帶有false],如果FYEProcessing爲true,則運行兩次[false,然後爲true]

來看,這種循環一次假。如果FYEProcessing是真實的,與真正的

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