`
liuwei1981
  • 浏览: 770228 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:160721
社区版块
存档分类
最新评论

53.控制流程的关键字

 
阅读更多

使用break语句可以终止switch语句和终止循环的子语句块,甚至是普通的程序块。关于如何终止switch语句,前面已经说过。这里主要说明如何来控制循环语句的执行。

 

1.break语句

 

在循环中,经常的,我们需要在某种条件出现时,强行终止循环的运行,而不是等到循环的判断条件为false时,这个时候,可以通过break来完成这个功能。


下面来看一个break的例子:
 int sum1 = 0,n=10;
 for (int i=1;i<=n;i++){
  sum1=sum1+i;
  if(i%2==0)break;
 }


这个例子中,如果i能够被2整除,就跳出这个for循环。

 

因此,实际上,这个for循环只能循环两次,得到的sum1的值是3。

 

对于很多有C++或其他编程经验的读者,可能对于goto语句不会陌生,也可能曾经深受其困。在Java中,goto语句虽然是保留字,但并没有使用它。但在Java里也有类似goto的功能,这个功能和break以及continue结合。

 

在本质上而言,它和goto语句的跳跃是不同的,它是一种循环中断的方式而已。它和goto语句的相同点在于,它们都使用了标签(label)。


所谓标签(label),就是后面跟了一个冒号“:”的标识符,如:
oneLabel:


从语法上看,在Java程序中,标签可以放在任意的地方,但是,一般而言,标签只有放在循环语句之前,才能真正起到应有的作用,如下:
LableOne:
循环
{
… …
}


我们来看一个用在嵌套循环中的和标签结合的break例子:
  outer:
  for(int i = 0;i<10;i++) {
   System.out.println("Outer loop:");
   inner:
    while(true) {
     int k = System.in.read();
     System.out.println("Inner Loop:"+k);
     if(k=='b') break inner;
     if(k=='q') break outer;
    }
  }

在这个例子中,从控制台接收一个输入,如果输入b,则退出内层的while循环,如果输入q则退出外层的循环(也就是终止整个循环)。

 

另外,如果需要终止普通的语句块(既不是switch也不是循环语句),则必须使用标签:


Label1:
 {
 Label2:
  {
  Lable 3:
   {
   …. …
   }
  }
 }

 

2.continue语句

 

continue语句用来略过循环中剩下的语句,重新开始新的循环,这和break语句的完全跳出循环是不一样的。


continue 仅仅出现在while/do…while/for语句的子语句块中。


也可以使用和标签结合的方式来选择需要终止的嵌套循环的层级。


下面来看一个例子:
 int sum1=0;                    
 int sum2=0;                    
 //Continue                     
 for (int j=1;j<=10;j++)  {                              
  if(j%2==0)continue;    
  sum2=sum2+j;           
 }                              
 System.out.println(sum2); 


在这个例子中,如果在j可以被2整除,则不进行后面的相加操作,而重新返回到循环的开头

 

因此,它运算后的值为:25。完整的代码请参考示例4-11中的BreakAndContinue.java中的Continue部分。

在上一小节介绍break的时候,我们就提到过,在continue中也可以使用标签。

 

现在我们来看一个continue和标签结合的例子:

源文件:ContinueWithLabelDemo.java
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;
   // 跳出整个循环
   break test;
  }
  System.out.println(foundIt ? "Found it" : "Didn't find it");
 }
}


这个程序的作用是从字符串searchMe中搜索指定的子串substring,从要搜索的字符串substring(假设为“subs”)第一个子符开始去匹配searchMe的第一个字符,如果第一个字符都不匹配,就不用再比较第二个字符了(利用continue)。

 

如果第一个字符匹配,则比较第二个字符,如果第二个字符不匹配,则不用再往下比较,否则,往下比较第三个字符,依次类推。

 

如果找到完全匹配的子字符串,则退出整个循环(break)并且返回true。然后根据是否返回true打印出“Found it”或“Didn’t find it”。


如果substring的值为“subs”(如程序中所示),则会在控制台上打印出“Found it”,如果substring的值为“abc”,则会打印出“Didn’t find it”。

分享到:
评论

相关推荐

    【IT十八掌徐培成】Java基础第02天-01.java关键字.zip

    这些关键字用于控制程序的流程,如条件判断、循环、异常处理等。 3. 类与对象关键字:`public`, `private`, `protected`, `static`, `final`, `abstract`, `void`, `this`, `super`, `new`, `instanceof`。它们用于...

    vb关键字汇总表.zip_VB语言关键字_vb关键字汇总

    VB的关键字是编程中的基础元素,它们具有特定的含义和功能,用于控制程序的流程、定义变量、声明函数等。下面我们将详细介绍VB语言中的关键字,并探讨其在编程中的作用。 1. 控制流关键字: - `If...Then...Else`...

    VB 查找关键字.....

    1. 控制结构关键字:如`If`、`Then`、`Else`、`For`、`Next`、`While`、`Wend`等,用于控制程序的流程,实现条件判断和循环。 2. 数据类型关键字:如`Integer`、`Double`、`String`、`Boolean`等,用于定义变量的...

    C语言关键字 C语言关键字 C语言关键字

    控制结构关键字用于实现程序流程控制,如条件判断、循环等。这些关键字对于编写逻辑复杂的程序至关重要。 - **if**:用于条件判断。 - **else**:与if配合使用,表示如果if条件不成立时执行的代码块。 - **switch**...

    Cyuyankechengsheji.rar_统计关键字

    比如C++中的"int"、"if"、"else"等,这些关键字在编译时有着特定的作用,比如定义变量类型、控制流程等。统计关键字可以帮助我们了解代码中使用的语言特性,揭示编程风格和习惯。 这个工具的工作流程如下: 1. **...

    keil关键字

    2. 控制流程关键字:用于控制程序的执行流程。 - if:条件判断语句。 - else:与if配合使用,表示条件的另一种可能性。 - switch:多路分支选择语句。 - case:用于switch语句中,表示一个分支的标签。 - ...

    C语言中32个关键字详解[参考].pdf

    C语言中有32个关键字,这些关键字是根据ANSI标准定义的,根据关键字的作用可以将其分为数据类型关键字、存储级别关键字、流程控制关键字三大类。 数据类型关键字 在C语言中,数据类型关键字共有9个,分别是:void...

    c语言关键字检索

    2. 控制流程关键字:如`if`(条件判断)、`else`、`switch`、`case`(选择结构)、`for`、`while`(循环控制)、`do...while`等,它们控制程序的执行流程,实现条件判断和循环操作。 3. 结构化关键字:如`struct`...

    java 关键字解析

    控制流程关键字用于控制程序的执行流程,主要包括条件判断和循环结构。 - `if`:条件语句,根据条件是否成立来决定是否执行一段代码。 - `else`:与if配合使用,当if条件不成立时执行的代码块。 - `else if`:多个...

    search_keyword12.rar_Java关键字

    在Java中,关键字是保留给编译器使用的,它们对于理解程序的结构和控制流程至关重要。本文将深入探讨Java中的关键字,并结合"search_keyword12.doc"和"www.pudn.com.txt"这两个文件中的内容,提供更全面的理解。 1....

    .JAVA关键字和英语单词

    17. **if-else, switch-case, break, continue**:控制流程语句,用于条件判断、多路分支和循环控制。 18. **while, do-while, for**:三种循环结构,满足不同类型的循环需求。 19. **length**:获取数组长度的...

    C#快速入门宝典及开发手册

    六、流程控制语句; 七、变量和常量; .......... 第四部分:深入了解C# .......... 接口; 文件操作; 注册表编程; 版本控制; 代码优化; 第五部分:附录 ........ 关键字; 错误码; 参考资料;

    C# 快速入门必备教程

    六、流程控制语句; 七、变量和常量; .......... 第四部分:深入了解C# .......... 接口; 文件操作; 注册表编程; 版本控制; 代码优化; 第五部分:附录 ........ 关键字; 错误码; 参考资料;

    C++关键字汇总 需要的可以下

    C++是一种广泛使用的面向对象的编程...因此,这个名为“C++关键字.jpg”的文件很可能是包含这些关键字的图片资料,对于初学者来说是一个很好的复习和参考工具。不断练习和实践,才能真正掌握C++的关键字和语言精髓。

    C语言的32个关键字、9种控制语句、34个运算符

    2. 控制语句关键字:这类关键字用于控制程序的执行流程。C语言中的控制语句关键字包括for、do、while、break、continue、if、else、goto、switch、case、default和return。这些关键字可以用来构成循环语句、条件语句...

    c语言关键字

    流程控制关键字 - **break**: 用于立即退出循环或switch语句。 - **continue**: 跳过当前循环体中的剩余部分,直接进入下一轮循环。 ### 5. 文件操作关键字 - **FILE**: 文件类型的标识符,用于文件操作。 - **...

    go基础关键字介绍.docx

    控制流关键字用于控制程序的执行流程。 - **`break`**: 用于提前退出循环或 `switch` 结构。 - **`continue`**: 用于跳过当前循环迭代并立即开始下一次迭代。 - **`defer`**: 用于推迟函数调用的执行,通常用于资源...

    Java基础之关键字_Java基础之关键字_源码

    Java的关键字一共51个,包括访问控制修饰符(如public、private、protected)、控制流程关键字(如if、else、for、while)、数据类型关键字(如int、char、boolean)、异常处理关键字(如try、catch、finally)等。...

    IAR的一些扩展关键字

    IAR扩展关键字为嵌入式开发者提供了强大的工具,用于优化数据和函数的存储、控制中断处理流程以及实现高级内存管理。熟练掌握并应用这些关键字,可以显著提升程序的性能和可靠性,特别是在资源受限的微控制器平台上...

    js 关键字变色v.rarjs 关键字变色v.rarjs 关键字变色v.rarjs 关键字变色v.rar

    JavaScript是一种广泛用于网页和网络应用的编程语言,它的关键字是语言的保留字,用于定义变量、函数、控制流程等。在代码编辑器或网页中,将这些关键字变色可以提高代码的可读性和美观性。 描述中同样重复了"js ...

Global site tag (gtag.js) - Google Analytics