跳出多层循环的简单方法(Java版)

简介:
在Java程序中可能使用多层循环来处理复杂的逻辑。但如果要从最内层循环跳出最外层循环是比较麻烦。下面的代码是一个三层循环的例子:

String[] arr =   new  String[]{ " a " " b " " c " };        
for (String s: arr)
{
    
for (String ss: arr)
    {
        
for (String sss: arr)
        {
            System.out.println(sss);
        }
    }               
}

    如果要从第三层循环跳出第一层循环,可以通过设置标志的方法来实现,但这比较麻烦。当然,如何使用过C或C++的开发人员可以想到使用goto语句,如下面的代码所示:

String[] arr =   new  String[]{ " a " " b " " c " };    
   
for (String s: arr)
{
    
for (String ss: arr)
    {
        
for (String sss: arr)
        {
            System.out.println(sss);
            goto label;
        }
    }               
}
label:

    虽然上面的代码看似可行,不过Java虽然还有goto关键字,但这个关键字却不能使用(Java编译器会抛出异常)。不过Java还提供了另外一种类似goto的解决方案,这就是break n和continue n。其中n表示标签名。只是在Java中只能在for、while、do...while三种循环语句前面定义,标签与循环体之间不能有任何其他的语句,如下面的标签定义是合法的:

label:   //  定义标签
for ( int  i  =   0 ; i  <   10 ; i ++ )
{
    ... ...
}

    下面的标签定义是不合法的:

label:   //  定义标签
System.out.println( " abcd " );   //  此处不能有任何Java语句
for ( int  i  =   0 ; i  <   10 ; i ++ )
{
    ... ...
}

    使用break n跳出多层循环的代码如下:

labelA:
for (String s: arr)
{            
    
for (String ss: arr)
    {
        
for (String sss: arr)
        {
            System.out.print(sss);
            
break  labelA;
        }
    }               
}

    上面的代码只输出了一个a,在第三层使用break labelA可以理解为如下的代码形式(虽然这段代码并不符合Java语法规则):

for (String s: arr)
{            
    
for (String ss: arr)
    {
        
for (String sss: arr)
        {
            System.out.print(sss);
            
goto  labelA;
        }
    }               
}
labelA:

    当然,还可以使用continue labelA继续执行某一层的循环,代码如下:

labelA:
for (String s: arr)
{            
    
for (String ss: arr)
    {
        
for (String sss: arr)
        {
            System.out.print(sss);
            
continue  labelA;
        }
    }               
}

     上面的代码输出“aaa”,读者可以将上面的代码理解为如下的形式(只是代码形式,并不符合Java语法规则):

for (String s: arr)
{            
    
for (String ss: arr)
    {
        
for (String sss: arr)
        {
            System.out.print(sss);
            
goto  labelA;
        }
    }               
labelA:
}

    当然,也可以按同样的方法跳出或继续第二层循环,代码如下:

for (String s: arr)
{            
    labelA:
    
for (String ss: arr)
    {
        
for (String sss: arr)
        {
            System.out.print(sss);
            
break  labelA;
        }
    }               
}

    上面的代码输出“aaa”。

for (String s: arr)
{            
    labelA:
    
for (String ss: arr)
    {
        
for (String sss: arr)
        {
            System.out.print(sss);
            
continue  labelA;
        }
    }               
}

    上面的代码输出“aaaaaaaaa”。






 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/215219,如需转载请自行联系原作者


相关文章
|
1月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
1月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
74 9
|
1月前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中stream API与传统for循环在性能上的对比,通过多个示例分析了不同场景下两者的优劣。作者指出,尽管stream API使代码更简洁,但不当使用会降低可读性和性能,特别是在处理大数据量时。实验结果显示,在多数情况下,普通for循环的性能优于stream API,尤其是在单次操作耗时较短但需多次执行的场景中。文章建议开发者在设计初期就考虑全局流程,避免重复使用stream流,以提升代码质量和性能。
Java循环操作哪个快?
|
1月前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中Stream API与传统for循环的性能对比及适用场景。作者通过实际案例分析,指出在某些情况下,过度使用Stream API会导致代码可读性和维护性下降。测试结果显示,在数据量较小的情况下,普通for循环的性能优于Stream API,尤其是在涉及多次类似操作时。因此,建议在开发中根据具体需求选择合适的遍历方式,以提高代码的可读性和性能。
Java循环操作哪个快?
|
29天前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
41 4
|
29天前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
30 4
|
27天前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
26 1
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
133 4
|
1月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
213 2
|
Java
JAVA方法的定义
JAVA方法的定义
97 0