经过很多'ArrayIndexOutOfBound'消息之后,这个for循环对我有用,但只是因为我补偿了(i-1)。
不--i(t)表示:_在进入循环之前,减1;
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 offset = 7 //来自
之前的日志行I / 1.for(i-1)= 6 char = [e] selStart = 6 //< - 此值必须为5 (i = 7; - i(= 6); i-1(= 5)
I / 1.for(i-1)= 5 char = [k] selStart = 5 ...
[编辑]解决方案:在第一次循环时,不会执行x-crement。
答案 0 :(得分:1)
这不是一个疯狂的想法,但不是,它没有。
--i
在语句的其余部分之前执行,但在执行语句时不会更改。
所以它可以在这里工作:
int i = 0;
System.out.println(--i);
但是在for循环结构中,它完全等同于使用i--
。