我學習Java,並使用該for語句的循環:有沒有辦法在for語句中切換變量?
for (int i = 0; i <3; i++){
...
}
我想每一次切換填充顏色的循環運行。我不想提供太多的例子,因爲我沒有在尋找我的具體問題的答案,但我想知道是否有辦法做到這一點?
基本上evey奇怪的時候循環運行,它x和它每運行一段時間,它y?
編輯:打字後,我想也許我可以做一個if語句與int我?像if i % 2 == 0 {}
? PS:我特此表達我的興奮。
我學習Java,並使用該for語句的循環:有沒有辦法在for語句中切換變量?
for (int i = 0; i <3; i++){
...
}
我想每一次切換填充顏色的循環運行。我不想提供太多的例子,因爲我沒有在尋找我的具體問題的答案,但我想知道是否有辦法做到這一點?
基本上evey奇怪的時候循環運行,它x和它每運行一段時間,它y?
編輯:打字後,我想也許我可以做一個if語句與int我?像if i % 2 == 0 {}
? PS:我特此表達我的興奮。
添加mod運算符。如果我%2 == 0,那麼爲偶數做些事情,否則爲奇數做些事情。
for (int i = 0; i < 3; i++) {
if(i % 2 == 0) {
//even, do Y
} else {
//odd, do X
}
}
我不知道該如何編譯器優化了這種說法,我知道微優化是一切罪惡的母親,但你可以使用一個布爾變量來控制自己的狀態:
boolean gray = false;
for(...) {
if(gray) {
} else {
}
gray != gray;
}
在現實生活中,我可能會將它修改爲2,作爲這裏的例子,但總是有其他選擇。
FWIW:微觀優化被認爲是所有邪惡的「根源」......但是,這就是說,我認爲推理普通習語並習慣使用最有可能提供最佳性能的習慣*在其他方面是等價的*是將黑客與真正優秀的程序員分開的東西。只是我的2c。 – 2010-02-20 01:46:29
對於使用相對昂貴的除法,有一點需要說明......除非編譯器發現'((x%2)== 0)'(或== 1)並將其轉換爲我回答了什麼。 – 2010-02-20 01:48:21
這裏有一個關於檢查一個字符串是否爲空的問題,並且所有的答案都涉及修剪字符串並檢查它的長度。前一段時間,我檢查了StringUtils.isBlank的源代碼(來自Commons-Lang),並且它們不修剪字符串,他們實際上檢查它是否從頭到尾有空格。修剪方法可能會這樣做,並返回一個新的字符串,並通過這樣做,他們將阻止創建一個新的對象。 – 2010-02-22 16:10:03
只是去我微優化等等拍我徽章,以及替代品的一套完整的這個問題:
for(int xa=0; xa<3; xa++) {
if((xa&0x1)==0) {
// even
}
else {
// odd
}
}
我真的很喜歡你的答案。從來沒有想過,但是,當然,如果最後一位是1,那很奇怪,否則它是偶數。 – 2010-02-19 20:39:46
笑,我覺得我們在同一時間被輸入:-D – Joel 2010-02-19 05:06:27
我相信是這樣。 :)玩得開心編碼! – 2010-02-19 05:52:41