Java中对continue的一些问题

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比较吃力(大学之前一点都没接触过编程),望多多指教!!

continue和goto是不能混谈的,
goto建议不要使用

continue的作用是终止循环中的本次循环动作,继续循环中的下一次动作
如果这里没有声明test这样的标示,直接写continue;的话,就只是跳出一次while的循环,但是现在这里他是跳出一次for的循环
而对于for(int i=0;i<=max;i++)这里的三个表达式,只有int i=0是第一次循环的时候调用,其他的时候不调用,剩下两个表达式是每次循环都调用
而对于这里分号隔开的三个表达式,不是只能写一句,而是可以写多句的,用,号隔开就可以了。
如for(int i=0,j=0;i<=max;j++,i++)这样的,但是这里的i,j都是局部变量,也就是只有在这个for循环里面可以用,外面就不可以调用了。

goto的作用你可以百度下,这个是学习的时候,老师都会不谈的保留字,或者说自己写程序的时候最好不要用。追问

是不是变量的变化过程如下: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 的重新赋值

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-24
continue 和GOTO 效果差不多
返回到你当前的循环 不是重新循环
BREAK 是跳出循环追问

返回的时候执行i++吗?执行 int n =substring.length() 和 int j = i 和 int k = 0吗?

第2个回答  2013-01-30
迭代部分是还执行的。j和k是归零的。。ps:小生山东大学,旁边,北大青鸟
第3个回答  2012-01-24
你是山大的?我也是啊
相似回答