2015-09-06 49 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