一元递减运算符 --i 的行为类似于 i-- [Android Studio (Java)]
The monadic decrement operator --i behaves like i-- [Android Studio (Java)]
在收到很多 'ArrayIndexOutOfBound' 消息后,这个 for 循环对我有用,但这只是因为我用 (i-1) 进行了补偿。
--i(t)不是表示:_在进入循环之前,减一吗?
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 // from Log line before
I/1.for (i-1)= 6 char=[e] selStart= 6 //<-- this value has to be 5
(i=7 ; --i (=6) ; i-1 (=5)
I/1.for (i-1)= 5 char=[k] selStart= 5 ...
[编辑] 解决方案:在第一个循环中,不执行 x-crement。
这不是一个疯狂的想法,但不,它不是。
--i
在语句的其余部分之前执行,但在语句执行时它不会改变。
所以它会在这里工作:
int i = 0;
System.out.println(--i);
但在 for 循环结构中它完全等同于使用 i--
.
在收到很多 'ArrayIndexOutOfBound' 消息后,这个 for 循环对我有用,但这只是因为我用 (i-1) 进行了补偿。
--i(t)不是表示:_在进入循环之前,减一吗?
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 // from Log line before
I/1.for (i-1)= 6 char=[e] selStart= 6 //<-- this value has to be 5 (i=7 ; --i (=6) ; i-1 (=5)
I/1.for (i-1)= 5 char=[k] selStart= 5 ...
[编辑] 解决方案:在第一个循环中,不执行 x-crement。
这不是一个疯狂的想法,但不,它不是。
--i
在语句的其余部分之前执行,但在语句执行时它不会改变。
所以它会在这里工作:
int i = 0;
System.out.println(--i);
但在 for 循环结构中它完全等同于使用 i--
.