class ContinueWithLabelDemo{
public static void main(String[] args) {
String searchMe = "Look for a substring in me";
String substring = "sub";
boolean foundIt = false;
int max = searchMe.length() - substring.length();
test:
for(int i = 0; i <= max; i++){
int n = substring.length();
int j = i;
int k = 0;
while(n-- != 0){
if(searchMe.charAt(j++) != substring.charAt(k++)){
continue test;
}
}
foundIt = true;
break test;
}
System.out.println(foundIt ? "Found it" : "Didn't find it");
}
}
for循環每一次都是for(int i = 0;i<=23;i++),都要執行24次。關鍵的while循環,n=3(子串的長度),只要n不等於0(也就是說要循環子串每個字符),就去判斷主串是否跟子串的字符相等,如果相等就循環判斷子串的每一個位置的字符,直到遍歷子串結束為止(while循環干的),foundIt為true(找到了),break test跳出test,程序結束。如果不相等,則說明當前位置的主串字符跟子串字符不同,則continue test,繼續執行for循環(此時i++了,也就是取主串下一個字符了),直到判斷主串結束為止。
我上面說的可能還是不明白,建議自己設置斷點,調試,看下每一步值的變化。