java中continue语句,在主串中匹配字串,那个双层嵌套不是很懂,有大神帮解释下吗
 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"); 
    }
}
0

3个回答

for循环每一次都是for(int i = 0;i<=23;i++),都要执行24次。关键的while循环,n=3(子串的长度),只要n不等于0(也就是说要循环子串每个字符),就去判断主串是否跟子串的字符相等,如果相等就循环判断子串的每一个位置的字符,直到遍历子串结束为止(while循环干的),foundIt为true(找到了),break test跳出test,程序结束。如果不相等,则说明当前位置的主串字符跟子串字符不同,则continue test,继续执行for循环(此时i++了,也就是取主串下一个字符了),直到判断主串结束为止。

我上面说的可能还是不明白,建议自己设置断点,调试,看下每一步值的变化。

2
GiantDrawf
GiantDwarf 差不多懂了,我自己设了断点一步步跟,谢谢
2 年多之前 回复

问题不太具体, 不好解答。
下次提问一定要这样问“为什么X+Y!=Z”,而不是“X+Y!=Z不是很懂”。
又好比:
那个Java的HashMap不是很懂,有大神帮解释下吗
那个Java的String不是很懂,有大神帮解释下吗

1
GiantDrawf
GiantDwarf 虚心接受
2 年多之前 回复

字串就用sub吧,r我是加上去看false的情况下是否正确

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
嵌套循环中的 continue ,break
continue 跳出的是就近的循环,不影响外层循环。   break 则中断本方法嵌套的所有循环(方法内)。   eg: 程序:     private void continueTest()     {      for(int i=0;i      {       for(int j=0;j       {        if(j==1)         con
几个跳转语句的介绍:break语句,continue语句,return语句。
5、跳转语句. break: 此语句导致程序终止包含它的循环并进行程序的下一阶段(整个循环后面的语句),  即:不是跳到下一个循环周期而是退出循环。         如果break语句包含在嵌套循环里,它只跳出最里面的循环。                       public class Example {         public static void main(S
java中continue到指定的for循环中
java中continue的用法一: public class continueTest2 { public static void main(String args[]) { String result = ""; my: for(int i=1; i<4; i++) { for(int j=1; j<6; j++) { result = i+";"+j;
java,for中多层if里continue执行
for (int i = 0; i &amp;lt; 10; i++) { System.out.println(i); if (i == 2) { if (i == 2) { if (i == 2) { System.out.println(&quot;1 i==2&quot;); continue; ...
语句嵌套(for中for)、break(跳出)\continue(继续)
/* 语句嵌套:就是语句中还有语句。 现在要学的是 循环嵌套。 */ class ForForDemo { public static void main(String[] args) { for (int x= 0;x&amp;lt;3;x++) { for (int y=0;y&amp;lt;4;y++) //共打印12次ok。 { System.out.printl...
java中特殊的流程控制语句(break,continue,return)
本文主要介绍在循环结构的流程控制,循环有单循环和嵌套循环。无论是单层循环还是嵌套循环,关键字的下面都不能有其他的语句,因为根本执行不到。。。 1,break;       break 结束循环,或者跳出循环 for(int i = 0;i if(i==4){         break;        }       System.out.println("i的值为"+i);
omp指导语句后有双层for循环,内层循环与外层循环相互独立OR内层循环依赖于外层循环时,任务与线程分布关系
本人电脑2个CPU,每个CPU上有8个核,总共有2*8*2=32个逻辑CPU结论:不管内层for循环是否依赖于外层for循环,其任务分配依据外层for循环迭代的次数来分配线程,这里下面1、2两种情况外层for循环均是32次,所以刚好将任务分为32个线程并行运行。1、内层for循环依赖于外层for循环时#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;omp.h&amp;gt;int...
对于for循环中的continue语句和break语句的使用
C++Primer.171页: continue语句终止最近的循环中的当前迭代并立即开始下一次迭代。 continue只能出现在for、while、和do while循环的内部,或者嵌套在此类循环里的语句或块的内部。 continue语句中断当前的迭代,但是仍然继续执行循环。 break语句终止离它最近的for、switch、while、和do while语句,并从这些语句之后的第一条语句...
Java双层for循环的解释
首先介绍最常见的双层for循环,写这个的原因就是看清楚for循环的多样化,按照当时需求去写for循环,希望你们能理解,少走弯路,写的不好的,写评论,我会修改的i++ :是先运行,在加1  ++i  :是先加1,在运行1. for (int i = 0; i &amp;lt; 5; i++) { for (int j = 0; j &amp;lt; 5; j++) { System.out....
循环语句中break和continue的区别
顾名思义, break,有“打破(僵局),结束(困难,不利局面),断绝(联系)”等意思, 所以引申为“从break处跳出总循环,结束本次循环,不执行本次循环中break之后的语句,且结束该循环控制体” 而continue,意思是“(中断后)继续”, 所以引申为“从continue处结束本次循环,中止本次循环,不执行本次循环中continue之后的语句,但(中止后)没有跳出该循环
JAVA之旅(二)——if,switch,for,while,do while,语句嵌套,流程控制break , continue ,函数,重载的示例总结
JAVA之旅(二)——if,switch,for,while,do while,语句嵌套,流程控制,函数,重载的示例总结 JAVA的思想真的很重要,所以要专心的学——献给刚入门的小程序员们 一.语句 一般语句也就三个类型判断语句 if 选择语句 switch 循环语句 for 当然,还有其他的 我们这里一个一个来讲 1.if if,如果,就是判断,if(条件){} //公共的 类
java for循环双层以上嵌套break新方法
源代码: public class Test {  public static void main(String[] args) {   int[] is = {0,1,2,3,4};   int[] js = {0,1,2,3,4};   Hello : for(int i : is){    World : for (int j : js){      if(i == 3 &&j
关于数据库触发器的个人理解/注解
mysql触发器+mysql UDF
java跳出双重for循环,跳出双重for循环的内部循环并不执行外重循环内代码
跳出一层:for(int i=0;i for(int a=0;a break;//跳出a循环,回到i循环 }}跳出两层:labe:for(int i=0;i for(int a=0;a break labe;//跳出整个循环 }} 跳出单层并且不执行外层的代码 boolean flag = false; for(int i=0;i
跳出内层for循环,而不执行外层for循环剩余语句
在项目中遇到需要跳出内层for循环的同时,不执行外层for循环剩余语句,直接开始执行下一次外层for循环的问题。最后发现可以通过为for循环命名,然后continue至特定的for循环来解决这个问题。于是写个下面例子记录一下。获取第一个数组中第二个数组所没有的奇数,代码如下:int[] one = {1, 4, 2, 8, 5, 7};int[] two = {3, 0, 5, 6, 8, 9};...
嵌套for循环中的break和continue
                                     break和continue 1.continue的用法 先说一下简单for循环中continue的用法, for (int i=0, i&amp;lt;3 i++){ if(i==1){ continue; } system.out.println(i) } 上面结果为:0 ...
c++ 嵌套for循环
#include&amp;amp;lt;iostream&amp;amp;gt; using namespace std; int main() { int array[3][3]={ {1,2,3}, {4,5,6}, {7,8,9} }; int i,j; for(i=1;i&amp;amp;lt;=3;i++){ for(j=1;j&amp;amp;lt;=3;j++){ ...
Java关键字——Continue
以下所有代码均托管在GitHub上(点击这里直达) 1.没有标签的时候,continue的作用是忽略本次循环剩下的语句,直接进行本层循环的下一次循环,而不会结束循环,如下例子 private void continueInner(){ for (int i = 0; i &amp;lt; TIMES; i++) { System.out.println(&quot;...
for循环内switch中带有break、continue的问题
如下代码: char a[5]="abcd"; for(i=0;i { switch(a[]i) { case 'a':printf("a\n");break; case 'b':printf("b\n");break; case 'c':printf("c\n");continue; default:printf("default\n");continue; } p
在switch case 语句中能否使用continue关键字?为什么?
  毋庸置疑,在switch case 语句中不能使用continue 关键字。continue语句的作用是跳出本次循环,转入执行下一次循环。故而,continue语句只能用于循环语句中,而switch case语句为多分支选择语句,不是循环语句,所以在switch case 语句中是不能使用continue 关键字的(除非把continue关键字放在循环语句中)。可以通过下面的例子简单验证: ...
java中continue配合标签进行继续循环
在java中break配合标签可以跳出指定的循环层次,同样continue配合标签可以跳过某些循环进行下一次的循环。 例如: public class ContinueDemo { public static void main(String[] args) { for(int i=0;i<9;i++) { if(i!=5) continue; System.o
字符串匹配的BF算法
已知两个字符串,一个主串S,一个子串T,求子串在主串中是否出现。如果出现,输出子串在主串中的位置。 利用暴力求解算法,每次比较主串和子串中的一个字符是否相等,如果相等,两个串的下标均后移。如果不相等,子串下标回到零,主串下标回到上一次开始比较的下一个位置。也就是说,每匹配失败一次,子串相对主串只移动一个字符的位置。在最好的情况下,该算法的时间复杂度为O(m+n),在最坏的情况下,时间复杂度为O(
Java中的跳转控制语句之break、continue、return
break只能用在switch语句和循环语句中,有时候会在条件语句中使用,那是因为外层是循环语句,break仍然在循环语句内;代码中遇到break,将结束该循环,执行之后的代码。for(int i = 1;i<5;i++){ if(i == 2){ break; } System.out.println(i); }输出结果为:1此时break只能调出一层循环,
KMP算法求模式串在原串中出现的次数
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF 0x3f3f3f3f #define maxn 110000 const double PI
数据结构之判定某字符串是否为主串的子串
/* 判定某字符串是主串的子串操作 */ #include&amp;amp;lt;stdio.h&amp;amp;gt; #include&amp;amp;lt;string.h&amp;amp;gt; #define N 50 int find(char*,char*); void main() { char s[N]; char s1[N]; int k; printf(“请输入字符串s:\n”); gets(s); printf(“请输入字符串s1:\n...
for-switch-continue的嵌套使用问题。
continue一般不能用于switch,但如果switch位于循环,则可用。但此时,break只是跳出switch,会继续执行switch后的语句,而用continue则会使得程序不仅跳出switch语句,同时也跳出本次循环,不再执行switch后的语句,直接进入下轮循环。   可参见:http://blog.sina.com.cn/s/blog_70ec9a6f01011yt4.html
switch语句和for语句中break以及continue的使用
1.switch语句中跳转到某个case上,并不是先一个个case去检查是否和switch中的常量一致,而是直接跳转到满足条件的那个        case上。(此处应该是编译器进行了优化)2.switch语句中的continue和break是针对switch来说的,continue是结束switch语句,接着执行for语句。break语句是结束        switch语句,接着执行switc...
continue在while和for里的区别
#include &amp;lt;stdio.h&amp;gt; int main(void) { int count = 0; char ch; while (count &amp;lt; 10) { ch=getchar(); if (ch == '\n') continue; putchar(ch); count++; } printf(&quot;\ncount is %d.\n...
Java--for循环之双层循环嵌套 执行流程
for循环单层循环执行流程:http://blog.csdn.net/asheandwine/article/details/76383304 接下来看双层循环: 循环嵌套是指在一个循环语句中再定义一个循环语句的语法结构。     while、do.. while和for循环语句都可以进行嵌套,并且他们之间可以进行互相嵌套。最常见的是在for循环中嵌套for循环。格式如下 for (初始...
多层循环的跳出(return goto break continue 的用法与区别)
多层循环的跳出 return 语句 goto 语句 break 语句 continue 语句的用法与区别。
Java教程12—在循环中使用continue
Continue语句主要用于循环内部。 每当在循环中遇到它时,控件直接跳转到循环的开头以进行下一次迭代,跳过循环体内语句的执行以进行当前迭代。 当您想要继续循环但不希望循环体中的其余语句(在continue语句之后)为该特定迭代执行时,这玩意儿非常有用。 语法: continue 单词后跟一个分号: continue; 程序:在循环中使用continue public c...
数据结构里的串是什么东西?(其实串就是指字符串)
早先的计算机在被发明时,主要作用是做一些科学和工程的计算工作,也就是现在我们理解的计算器,只不过它比小小计算器功能更强大、速度更快一些。后来发现,在计算机上作非数值处理的工作越来越多,使得我们不得不需要引入对字符的处理。于是就有了字符串的概念。 比如我们现在常用的搜索引擎,当我们在文本框中输入“简明 现代"时,它已经把我们想要的“简明现代魔法”列在下面了(联想词)。显然这里网站作了一个字符串
continue 循环直接跳到外层
[root@master sh]# cat 1.sh count=1 while true do i=1 j=1 if [ $i = 0 ] && [ $j = 0 ] then exit 0 else echo 2222222 if [ $i = 1 ] && [ $j = 0 ] then ex
java控制跳转语句continue、break和return区别
countinue:用来终止本次循环,继续下一次循环。 break:用来跳出循环,在switch或者循环中使用。 return:用来结束方法。 示例continue: public static void main(String argv[]){ for(int i = 0; i &amp;amp;lt; 6 ; i++){ if(i == 4)...
JAVA基础---break语句和continue语句
最近在温习java基础,对break和continue又重新认识一下。仅此记录一下供以后查阅。 java中break语句和continue语句是和循环语句紧密相关的两种语句。 其中break关键字意思是中断,打断;continue关键字意思是继续。 使用这两个关键字可以调节循环的执行。break语句 在循环语句中,break的作用是结束循环语句的执行。 break语句可以用在三种循环语句的
java中的switch语句中break和continue的区别--------总算是弄明白了
1、先上一个例子:   package com.test; import java.util.ArrayList; import java.util.List; public class SwitchTest {         public void ss(List l){         for(int i=0;i              switch(l.get(i
OC 跳出多层for循环嵌套 goto
方法名 { goto 必须放在方法中 for (int i = 0; i < 5; i++) { for (int j = 0; j < 9; j++) { if (i == 2 && j == 4) { NSLog(@"j ==== > %d",j); goto b;
包含finally的异常代码块里的return,break,continue语句如何执行
包含finally的异常代码块结构如下: try{ return;}catch(){return;} finally{return;} 这种结构里的return语句怎么执行呢?因为这是有finally时的情况,比较特殊。首先,执行try代码块中位于“return”之前的代码(包括return语句中的表达式运算,比如return 1+1,这个1+1也会被执行),意思就是程序计算了return语句,
JAVA基础(34) java如何退出两层for循环
1.直接上源码,不用多说啥? @Test public void forEachTest() throws Exception{ int max=100; outer:for(int i=0;i<max;i++){ System.out.println("外层for循环,第("+(i+1)+")次循环开始++++++"); if(i > 10){ System.ou
continue 在 switch中使用 (switch嵌套在while循环中)
<br />如果你在switch中使用continue,continue生效是对于while循环 <br /> 如果你在switch中使用break,break生效是对于switch。 <br /> <br />#include <stdio.h><br /><br /> int main()<br /> {<br />     int i_index;<br /><br />     for (i_index = 0; i_index < 5; ++i_index) {<br />    
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java大神班 java大神学习笔记