在阅读Oracle Docs时,我遇到的代码是在经过2个晚上的努力后无法分解的。
以下是代码:
String searchMe = "Look for substring in me";
String subString = "sub";
boolean foundIt = false;
int max = searchMe.length() - subString.length();
test:
for(int i=0;i<=max;i++)
{
int j = i;
int k = 0;
int n = subString.length(); //k
while(n-- != 0)
{
//1 not equal to 0?
if(searchMe.charAt(j++) != subString.charAt(k++))
{
System.out.println(j+": "+searchMe.charAt(j)+" "+k+": "+subString.charAt(k));
continue test;
}
}
foundIt = true;
break test;
}
System.out.println(foundIt ? "found it": "did not find it");
看一下,似乎while循环检查searchMe中的char
是否不等于subString中的char
,如果没有则返回for循环。
当它返回到for循环时,我预计n
值会因post-decrement
而递减,但是当我打印出来时,值保持不变。
k
发生了同样的情况,post increment
应该在if statement
中增加了它的值,但事实并非如此。
以下是我获得的打印值,因为您可以看到k value
保持完全相同。
1: o 1: u
2: o 1: u
3: k 1: u
4: 1: u
5: f 1: u
6: o 1: u
7: r 1: u
8: 1: u
9: a 1: u
10: 1: u
11: s 1: u
found it
P.S我知道在一个语句中增加的内容是有效的,因为我之前在while语句中尝试过它并且它做得很好。