public class ContinueWithLabelDemo {
public static void main(String[]args){
String searchMe ="Look for a substring in me";
String substring = "subs";
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++)){
//跳出的本次循环是for循环,而不是while循环
continue test;
}
}
foundIt = true;
//跳出整个循环
}
System.out.println(foundIt?"Found it":"Didn't found it");
}
}
今天在课本上看到了这么个程序,不知道遇到 continue 重新开始循环时那个 for 的迭代部分(就是i++)执行吗?重新开始 for 循环时那个 j 和 k 还是还原到 i 和 0 吗,还是说 int n =substring.length() 和 int j = i 和 int k = 0 只是在第一次的时候执行?小生看不太懂这个程序,课本上只说是搜索字符串的,有没有高人可以帮忙解释一下吖,主要是中间的循环看不太懂,感激不尽~!PS:小生是山东大学数字媒体技术专业大一新生,学Java比较吃力(大学之前一点都没接触过编程),望多多指教!!
是不是变量的变化过程如下:i=0,j=0,k=0,continue,i=1,j=1,k=0,continue,i=2,j=2,k=0...就是第一次遇到continue之后执行i++?然后第二次执行int j=i,int k=0?
追答是,每次都是i++ 以及对n j k 的重新赋值
返回的时候执行i++吗?执行 int n =substring.length() 和 int j = i 和 int k = 0吗?