语法:
continue 标号名
break 标号名
作用:
continue 标号名 : continue 后的标号名 应该标识 在外层循环语句 ,其作用是使 程序的流程 转入标识的循环层次,继续执行
break 标号名 : break 跳出 这个标识的语块,执行该语句的后续语句;
代码:
public class ContinueWithLableExample {
public static void main(String[] args) {
String searchMe="Look for a substring in me";
String substring="for";
boolean foundIt=false;
int max=searchMe.length()-substring.length();
System.out.println(searchMe.length());
test:
for(int i=0;i<=max;i++){
int n =substring.length();
System.out.println(n);
int j=i;
int k=0;
System.out.println(k);
while(n-- !=0){
if(searchMe.charAt(j++)!=substring.charAt(k++)){
System.out.println("j= "+j);
System.out.println("k= "+k);
continue test;
}
}
foundIt=true;
break test;
}
System.out.println(foundIt?"FoudIt":"Didn't find it");
}
}
输出结果:
26
3
0
j= 1
k= 1
3
0
j= 2
k= 1
3
0
j= 3
k= 1
3
0
j= 4
k= 1
3
0
j= 5
k= 1
3
0
FoudIt
分析这串代码的运行轨迹:
1:代码都是顺序执行;
2:此处是双层循环,有嵌套的continue 和break语句;
当
while(n-- !=0){
if(searchMe.charAt(j++)!=substring.charAt(k++)){
System.out.println("j= "+j);
System.out.println("k= "+k);
continue test;
}
}
当if
if(searchMe.charAt(j++)!=substring.charAt(k++)){
System.out.println("j= "+j);
System.out.println("k= "+k);
continue test;
}
当if中的条件为真 则 continue test,一次一次的跳出
|
.
.
.
循环
.
.
.
|
当循环到 第 六 次;
即:int j=5
n=3
j++ 为6
k++ 为1
此时if中的条件为false; 就会运行while(n-- !=0){}的循环
n=2;
j++ 为7;
k++为2
此时if中条件为false;任然运行while(n-- !=0){}的循环
n=1;
j++ 为8;
k++为3;
此时if中条件为false,运行while(n-- !=0){}此时n=0 跳出while循环执行
foundIt=true;
break test;
跳出test了
此时 foundIt = true.
分析:
n循环的次数 和 substring的length(),这样就判定了 substring 是否与string中的匹配;
另外 在同一个循环中 变量是不断的赋值和赋值,j and k 是一个局部变量