读书人

Idiot#039;s Note Five: 代标号的continue

发布时间: 2012-10-25 10:58:58 作者: rapoo

Idiot's Note Five: 代标号的continue和break,以及java中赋值的深入理解

语法:

?

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");}}

??

输出结果:

?

2630j= 1k= 130j= 2k= 130j= 3k= 130j= 4k= 130j= 5k= 130FoudIt

??

分析这串代码的运行轨迹:

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 是一个局部变量

读书人网 >编程

热点推荐