You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java嵌套for循环中如何同时让两层循环执行continue操作?

Java嵌套循环同时执行两层continue的实现方案

Java语法本身没有原生支持“同时continue两层循环”的关键字,不过有两种常用实现方式可以达到相同效果,且你担心的标签跳转效率问题其实不存在——Java的标签跳转属于编译期语法糖,运行时和普通流程控制的性能没有差异。


方案1:带标签的continue(推荐)

直接给外层循环添加自定义标签,内层满足条件时直接continue外层标签,即可直接终止当前内层循环、同时让外层进入下一轮迭代,代码示例如下:

public class StringMerger {

    public static boolean isMerge(String s, String part1, String part2) {
        StringBuilder MergedWord = new StringBuilder("");
        String Whole = part1+part2;
        // 给外层循环添加标签
        outerLoop: for(int j = 0; j < Whole.length(); j++){
           for(int I = 0; I < part1.length(); I++){
              if((Character.compare(s.charAt(j), part1.charAt(I)) ==  0) && (j == I)){
                  MergedWord.append(s.charAt(I)+"");
                  // 直接continue外层标签,同时终止内层循环、触发外层下一轮迭代
                  continue outerLoop;
              }
              else
                  break;
            }
            for(int i = 0; i < part2.length(); i++){
                if((Character.compare(s.charAt(j), part2.charAt(i)) == 0) && (j == i)){
                    MergedWord.append(part2.charAt(i) + "");
                    // 同样触发外层下一轮
                    continue outerLoop;
                }
                else
                    break;
            }
        }
        return s.equals(MergedWord.toString());
    }
}

另外你原代码末尾的三元运算符? true : false是冗余的,s.equals(...)本身就返回布尔值,可以直接返回。


方案2:状态标记变量(不想用标签时可选)

如果不想用标签语法,可以新增布尔变量标记是否需要触发外层continue,实现逻辑如下:

public class StringMerger {

    public static boolean isMerge(String s, String part1, String part2) {
        StringBuilder MergedWord = new StringBuilder("");
        String Whole = part1+part2;
        for(int j = 0; j < Whole.length(); j++){
           boolean needContinueOuter = false;
           for(int I = 0; I < part1.length(); I++){
              if((Character.compare(s.charAt(j), part1.charAt(I)) ==  0) && (j == I)){
                  MergedWord.append(s.charAt(I)+"");
                  needContinueOuter = true;
                  break;
              }
              else
                  break;
            }
            if (needContinueOuter) {
                continue;
            }
            for(int i = 0; i < part2.length(); i++){
                if((Character.compare(s.charAt(j), part2.charAt(i)) == 0) && (j == i)){
                    MergedWord.append(part2.charAt(i) + "");
                    needContinueOuter = true;
                    break;
                }
                else
                    break;
            }
            if (needContinueOuter) {
                continue;
            }
        }
        return s.equals(MergedWord.toString());
    }
}

这种方式和标签方案的运行效率基本一致,只是多了几次布尔判断,可读性略差一些。


内容的提问来源于stack exchange,提问作者TheGuradian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:15:03