GiantDwarf 2016-11-26 11:55 采纳率: 100%
浏览 1038
已采纳

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"); 
    }
}
  • 写回答

3条回答 默认 最新

  • 全栈极简 博客专家认证 2016-11-26 13:33
    关注

    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条)

报告相同问题?

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,