2015-09-06 50 views
-1

經過大量的'ArrayIndexOutOfBound'消息,這個for-loop適用於我,但僅僅因爲我用(i-1) 。 (t)表示:在進入循環之前,減1?單因子遞減運算符--i的行爲就像我 - [Android Studio(Java)]

for (int i = offset; i > 0; --i) { 
    if (Character.isLetter(lnCmplt.charAt(i - 1))) { 
     selStart -= 1; 
     Log.i("1.for (i-1)= ", (i-1)+" char=["+lnCmplt.charAt(i-1)+"] selStart= "+selStart); 
    } 
} 

Log.i控制檯輸出(它是真實的,僅修整):

lnStart = 492 lnEnd = 506偏移= 7從登錄//線之前

I/1。 (i-1)= 6 char = [e] selStart = 6 // < - 該值必須爲5 (i-1)= 5 char = [k] selStart = 5 ...

[編輯]解決方案:在第一個循環中,不執行x-crement。

+0

您似乎對組成'for'語句的部分的執行順序感到困惑。 –

+0

@SotiriosDelimanolis:看起來相當如此,我會通知我的。 thx爲鏈接。 – uneviltoo

回答

1

這不是一個瘋狂的想法,但不,它不。

--i在語句的其餘部分之前執行,但執行語句時不會更改。

因此,這將在這裏工作:

int i = 0; 
System.out.println(--i); 

但在for循環構造是完全等同於使用i--

+0

現在我明白了。在第一個循環中,x-crement不會被執行。謝謝 – uneviltoo