⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java02_09.htm

📁 JAVA的课件
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Java语言教程</title>
</head>

<body background="Bg.gif">

<p align="center"><b><font size="5">2.9 流程控制语句</font></b></p>      
<p>任何一种高级语言都只需要三种流程控制语句:顺序、分支、循环。</p>    
<p>与C、C++相同,Java程序通过流控制来执行程序流,完成一定的功能。语句可以是单一的一条语句( 如c=a+b; ),也可以是复合语句或块语句,用{}来表示。&nbsp;<br>     
<br>    
最简单的是表达式语句,在表达式后加一个;就构成了表达式语句,如:a=b*2;</p>    
<p>块语句是用{}将若干语句组合在一起形成的,它相当于一条语句。如:</p>    
<p>{ a=b+c;</p>     
<p>&nbsp; { i++;k--;}</p>     
<p>}</p>    
<p>下面我们分别来介绍Java中的流控制语句,包括<br>    
<br>    
     1.分支语句: if-else, switch.&nbsp;<br>     
<br>    
     2.循环语句:while, do-while, for.&nbsp;<br>     
<br>    
     3.例外处理语句:try-catch-finally, throw&nbsp;<br>     
<br>    
最后我们将简单介绍一下注释语句。&nbsp;<br>   
<br>   
<b>   
一、分支语句</b>&nbsp;<br>   
<br>   
     分支语句提供了一种控制机制,使得程序的执行可以跳过一些语句不执行,而转去执行特定的语句。&nbsp;<br>   
<br>   
1.条件语句if-else&nbsp;<br>   
<br>   
     if-else语句根据判定条件的真假来执行两种操作中的一种,      
它的格式为:&nbsp;<br>    
<br>    
if&nbsp; (boolean-expression)&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp; statement1;&nbsp;<br>     
    [else&nbsp;<br>    
&nbsp;&nbsp;&nbsp;&nbsp; statement2;]&nbsp;      
//这里的[]表示里面的内容可以省略,下同<br>    
① 布尔表达式boolean-expression是任意一个返回布尔型数据的达式(这比C、C++的限制<br>     
要严格)。&nbsp;<br>    
② 每个单一的语句后都必须有分号。&nbsp;<br>     
③ 语句statement1,statement2可以为复合语句,这时要用大括号{}括起。建议对单一的语句<br>     
也用大括号括起,这样程序的可读性强,而且有利于程序的扩充(可以在其中填加新的语句<br>    
)。{}外面不加分号。&nbsp;<br>    
④ else子句是任选的。&nbsp;<br>     
⑤ 若布尔表达式的值为true,则程序执行statement1,否则执行statement2。&nbsp;<br>     
⑥ if-else语句的一种特殊形式为:&nbsp;<br>     
&nbsp; if(expression1)&nbsp;<br>     
&nbsp;&nbsp; statement1;<br>     
&nbsp; else if (expression2)&nbsp;<br>     
&nbsp;&nbsp; statement2;<br>     
&nbsp; else if (expressionM)<br>     
&nbsp;&nbsp; statementM ;<br>     
&nbsp; else&nbsp;&nbsp;<br>     
&nbsp;&nbsp; statementN;<br>     
⑦ else子句不能单独作为语句使用,它必须和if配对使用。<b><font color="#FF00FF">else总是与离它最近的if配对。可以通过使用大括号{}来改变配对关系。</font></b><br>    
<br>   
    例2.4&nbsp; 比较两个数的大小,并按从小到大的次序输出。<br>     
    public class CompareTwo{&nbsp;<br>     
&nbsp; public static void main( String args[] ){&nbsp;<br>     
&nbsp;&nbsp; double d1=23.4;&nbsp;<br>     
&nbsp;&nbsp; double d2=35.1;&nbsp;<br>     
&nbsp;&nbsp; if(d2>=d1)&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(d2+" >= "+d1);&nbsp;<br>     
&nbsp;&nbsp; else&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(d1+" >= "+d2);&nbsp;<br>     
&nbsp; }&nbsp;<br>     
    }&nbsp;<br>    
    运行结果为:&nbsp;<br>    
    C:\>java CompareTwo&nbsp;<br>     
<br>    
     35.1 >= 23.4&nbsp;<br>     
<br>    
     例2.5&nbsp; 判断某一年是否为闰年。&nbsp;<br>     
     闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除;②能被400整除。&nbsp;<br>    
    public class LeapYear{&nbsp;<br>     
&nbsp; public static void main( String args[] ){&nbsp;<br>     
&nbsp;&nbsp;&nbsp; int year=1989;<br>      
&nbsp; //=========method 1============<br>     
&nbsp;&nbsp;&nbsp; if( (year%4==0 &amp;&amp; year%100!=0) || (year%400==0) )&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(year+" is a leap year.");&nbsp;<br>     
&nbsp;&nbsp;&nbsp; else&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(year+" is not a leap year.");&nbsp;<br>     
&nbsp;&nbsp;&nbsp; year=2000;&nbsp;<br>     
&nbsp; //========method 2=============<br>     
&nbsp;&nbsp;&nbsp; boolean leap;&nbsp;<br>     
&nbsp;&nbsp;&nbsp; if( year%4!=0 )&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp; leap=false;&nbsp;<br>     
&nbsp;&nbsp;&nbsp; else if( year%100!=0 )&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp; leap=true;&nbsp;<br>     
&nbsp;&nbsp;&nbsp; else if( year%400!=0 )&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp; leap=false;&nbsp;<br>     
&nbsp;&nbsp;&nbsp; else&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp; leap=true;&nbsp;<br>     
&nbsp;&nbsp;&nbsp; if( leap==true )&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(year+" is a leap year.");&nbsp;<br>     
&nbsp;&nbsp;&nbsp; else&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(year+" is not a leap year.");&nbsp;<br>     
&nbsp;&nbsp;&nbsp; year=2050;&nbsp;<br>     
&nbsp; //=======method3 ================<br>     
&nbsp;&nbsp;&nbsp; if( year%4==0)<br>     
&nbsp;&nbsp;&nbsp;&nbsp; {if( year%100==0 )&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {if( year%400==0)&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; leap=true;&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; leap=false;&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; leap=true;&nbsp;<br>    
&nbsp;&nbsp;&nbsp;&nbsp; }<br>     
&nbsp;&nbsp;&nbsp; else&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; leap=false;&nbsp;<br>     
&nbsp;&nbsp;&nbsp; if( leap==true )&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(year+" is a leap year.");&nbsp;<br>     
&nbsp;&nbsp;&nbsp; else&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(year+" is not a leap year.");&nbsp;<br>     
&nbsp;&nbsp; }&nbsp;<br>     
    }&nbsp;<br>    
    运行结果为<br>    
    C:\>java LeapYear&nbsp;<br>     
    1989 is not a leap year.&nbsp;<br>     
    2000 is a leap year.&nbsp;<br>     
    2050 is not a leap year.&nbsp;<br>     
<br>    
     该例中,方法1用一个逻辑表达式包含了所有的闰年条件,方2使用了if-else语句的特殊形式,方法3则通过使用大括号{}对if-else进行匹配来实现闰年的判断。大家可以根据程序来对比这三种方法,体会其中的联系和区别,在不同的场合选用适当的方法。&nbsp;<br>    
<br>    
2. 多路分支语句switch&nbsp;<br>     
<br>    
     switch 语句根据表达式的值来执行多个操作中的一个,它的&nbsp;<br>     
 般格式如下:&nbsp;<br>    
<br>    
    switch (expression){&nbsp;<br>     
&nbsp; case value1 : [statement1;]&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
[break;]<br>    
&nbsp; case value2 : [statement2;]<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
[break;]<br>    
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; …………<br>     
&nbsp; case valueN : [statemendN;]<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      
[break;]<br>    
&nbsp;&nbsp; [default      : defaultStatement; ]&nbsp;<br>     
    }&nbsp;<br>    
<br>    
(1)表达式expression可以返回简单类型的值(如整型、字符型),多路分支语句把表达式返回的值与每个case子句中的值相比。如果匹配成功,则执行该case子句后的语句序列。&nbsp;<br>    
(2)case子句中的值valueI必须是常量,而且所有case子句中的值是不同的。&nbsp;<br>    
(3)default子句是任选的。当表达式的值与任一case子句中的valueI都不匹配时,程序执行<br>    
default后面的语句。如果表达式的值与任一case子句中的值都不匹配且没有default子句,则程<br>    
序不作任何操作,而是直接跳出switch语句。&nbsp;<br>    
(4)break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。因为case子句只是起到一个标号的作用,用来查找匹配的入口,从此处开始执行,对后面<br>    
的case子句不再进行匹配,而是直接执行其后的语句序列, 因此该在每个case分支后,要用break来终止后面的case分支语句的执行。&nbsp;<br>     
(5)在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break。<br>    
(6)case分支中包括多个执行语句时,可以不用大括号{}括起。&nbsp;<br>    
(7)switch语句的功能可以用if-else来实现,但在某些情况下,使用switch语句更简炼,可读性强,而且程序的执行效率提高。&nbsp;<br>    
<br>    
     例2.6 根据考试成绩的等级打印出百分制分数段。&nbsp;<br>     
<br>    
    public class GradeLevel{&nbsp;<br>     
       public static void main( String args[] ){&nbsp;<br>     
&nbsp; System.out.println("\n** first situation **");&nbsp;<br>     
&nbsp; char grade='C';         //normal use&nbsp;<br>     
&nbsp; switch( grade ){&nbsp;<br>     
&nbsp;&nbsp; case 'A' : System.out.println(grade+" is 85~100");&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;<br>     
&nbsp;&nbsp; case 'B' : System.out.println(grade+" is 70~84");&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;<br>     
&nbsp;&nbsp; case 'C' : System.out.println(grade+" is 60~69");&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;<br>     
&nbsp;&nbsp; case 'D' : System.out.println(grade+" is <60");&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;<br>     
&nbsp;&nbsp; default  : System.out.println("input error");&nbsp;<br>     
&nbsp; }&nbsp;<br>     
&nbsp; System.out.println("\n** second situation **");&nbsp;<br>     
&nbsp; grade='A';  ∥creat error without break statement&nbsp;<br>     
&nbsp; switch( grade ){&nbsp;<br>     
&nbsp;&nbsp; case 'A' : System.out.println(grade+" is 85~100");&nbsp;<br>     
&nbsp;&nbsp; case 'B' : System.out.println(grade+" is 70~84");&nbsp;<br>     
&nbsp;&nbsp; case 'C' : System.out.println(grade+" is 60~69");&nbsp;<br>     
&nbsp;&nbsp; case 'D' : System.out.println(grade+" is <60");&nbsp;<br>     
&nbsp;&nbsp; default  : System.out.println("input error");&nbsp;<br>     
&nbsp; }&nbsp;<br>     
&nbsp; System.out.println("\n** third situation **");&nbsp;<br>     
&nbsp; grade='B';        ∥several case with same operation&nbsp;<br>     
&nbsp; switch( grade ){&nbsp;<br>     
&nbsp;&nbsp; case 'A' :&nbsp;<br>     
&nbsp;&nbsp; case 'B' :&nbsp;<br>     
&nbsp;&nbsp; case 'C' : System.out.println(grade+" is >=60");&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;<br>     
&nbsp;&nbsp; case 'D' : System.out.println(grade+" is <60");&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;<br>     
&nbsp;&nbsp; default  : System.out.println("input error");&nbsp;<br>     
&nbsp; }&nbsp;<br>     
&nbsp;}&nbsp;<br>    
    }&nbsp;<br>    
    运行结果为<br>    
    C:\>java GradeLevel&nbsp;<br>     
    **** first situation ****&nbsp;<br>     
    C is 60~69&nbsp;<br>     
    **** second situation ****&nbsp;<br>     
    A is 85~100&nbsp;<br>     
    A is 70~84&nbsp;<br>     
    A is 60~69&nbsp;<br>     
    A is <60&nbsp;<br>     
    input error&nbsp;<br>     
    **** third situation ****&nbsp;<br>     
    B is >=60&nbsp;<br>     
<br>    
     从该例中我们可以看到break语句的作用。&nbsp;<br>    
<br>    
3. break语句&nbsp;<br>     
&nbsp;&nbsp;&nbsp; 在switch语中,break语句用来终止switch语句的执行。使程序switch语句后的第一个语句<br>     
开始执行。&nbsp;<br>    
&nbsp;&nbsp;&nbsp; 在Java中,可以为每个代码块加一个括号,一个代码块通常用大括号{}括起来的一段代码。加标号的格式如下:     BlockLabel: { codeBlock }&nbsp;<br>     
&nbsp;&nbsp;&nbsp; break语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块的第一条语句处执行。其格式为:&nbsp;<br>     
    break [标号];<br>    
    例如:&nbsp;<br>   
     a:{……         //标记代码块a&nbsp;<br>     
     b:   {……            //标记代码块b&nbsp;<br>     
     c:         {……      //标记代码块c&nbsp;<br>     
&nbsp;&nbsp;&nbsp;&nbsp; break a;&nbsp;<br>    
&nbsp;&nbsp;&nbsp;&nbsp; ……      //will not be executed&nbsp;<br>     
&nbsp;&nbsp;&nbsp; }&nbsp;<br>     
&nbsp;&nbsp;&nbsp; ……         //will not be executed&nbsp;<br>     
&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;<br>     
&nbsp;&nbsp; ……         //will not be executed&nbsp;<br>     
&nbsp;}&nbsp;<br>    
      ……                 /execute from here&nbsp;<br>     
      }&nbsp;<br>    
<br>    
&nbsp;&nbsp; &nbsp;&nbsp; 与C、C++不同,Java中没有goto语句来实现任意的跳转,因为goto语句破坏程序的可读性<br>     
,而且影响编译的优化。但是从上例可以看出,Java用break来实现goto语句所特有的一些优点<br>    
。如果break后所指定的标号不是一个代码块的标号,而是一个语句,则这时break完全实现goto的功能。不过应该避免这种方式的使用。如果没有标号,则跳出包含break语句的最内层的那个块语句。</p>   
<p>4.返回语句return&nbsp;<br>   
&nbsp;&nbsp;&nbsp;&nbsp; return语句从当前方法中退出,返回到调用该方法的语句处,继续程序的执行。(有关方法的内容,我们将在第三章详细讲)     
。返回语句有两种格式:&nbsp;<br>    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -