📄 java5.htm
字号:
<html>
<head>
<title>Java入门</title>
<title>石头教学网</title>
<style>
<!--
A:link {text-decoration: none; color: "blue"}
A:visited {text-decoration: none; color: "#000000"}
A:active {text-decoration: none;color:"black"}
A:hover {text-decoration: underline; color: ff0000}
-->
</style>
<style type="text/css">
<!--
p{font-size:9pt;line-height;13pt;}
td { font-size: 9pt ; line-height:13pt;
}
A{text-transform: none;
text-decoration: none;font-size: 9pt ; line-height:13pt;}
-->copyright fangame
</style></head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="100%">
<h3>第四章 流控制</h3>
<p>与C、C++相同,Java程序通过流控制来执行程序流,完成一定?
个语句组成的。语句可以是单一的一条语句(如c=a+b;),也可以
复合语句。</p>
<p>下面我们分别来介绍Java中的流控制语句,包括</p>
<p>1.分支语句:if-else,break,switch,return.</p>
<p>2.循环语句:while,do-while,for,continue.</p>
<p>3.例外处理语句:try-catch-finally,throw</p>
<p>最后我们简单介绍一下注释语句。</p>
<h4>§4.1分支语句</h4>
<p>分支语句提供了一种控制机制,使得程序的执行可以跳过?
些语句不执行,而转去执 行特定的语句。</p>
<p>4.1.1条件语句if-else.</p>
<p>if-else语句根据判定条件的真假来执行两种操作中的一种, ?的格式为:</p>
<p>if(boolean-expression)</p>
<p>statement1;</p>
<p>[else</p>
<p>statement2;]</p>
<p>1.布尔表达式boolean-expression是任意一个返回布尔型数据的 达式(这比C、C++的限制
要严格)。</p>
<p>2.每个单一的语句后都必须有分号。</p>
<p>3.语句statement1,statement2可以为复合语句,这时要用大括号{} ?起。建议对单一的语句
也用大括号括起,这样程序的可读性强,而且有利于程序的扩充(
可以在其中填加新的语句 )。{}外面不加分号。</p>
<p>4.else子句是任选的。</p>
<p>5.若布尔表达式的值为true,则程序执行statement1,否则执行sta tement2。</p>
<p>6.if-else语句的一种特殊形式为:</p>
<p>if(expression1){</p>
<p>statement1</p>
<p>}else if(expression2){</p>
<p>statement2</p>
<p>}……</p>
<p>}else if(expressionM){</p>
<p>statementM</p>
<p>}else{</p>
<p>statementN</p>
<p>}</p>
<p>else子句不能单独作为语句使用,它必须和if配对使用。else总是与离它最近的if配对
。可以通过使用大括号{}来改变配对关系。</p>
<p>7.举例:</p>
<p>例4.1比较两个数的大小,并按从小到大的次序输出。</p>
<p>public class CompareTwo{</p>
<p>public static void main(Stringargs[]){</p>
<p>double d1=23.4;</p>
<p>double d2=35.1;</p>
<p>if(d2>=d1)</p>
<p>System.out.println(d2+">="+d1);</p>
<p>else</p>
<p>System.out.println(d1+">="+d2);</p>
<p>} } 运行结果为:</p>
<p>C:\>java CompareTwo</p>
<p>35.1>=23.4</p>
<p>例4.2判断某一年是否为闰年。</p>
<p>闰年的条件是符合下面二者之一:①能被4整除,但不能被100 整除;②能被4整除,又能被
100整除。</p>
<p>public class LeapYear{</p>
<p>public static void main(String args[]){</p>
<p>int year=1989;//method1</p>
<p>if((year%4==0&&year%100!=0)||(year%400==0))</p>
<p>System.out.println(year+"isaleapyear.");</p>
<p>else</p>
<p>System.out.println(year+"isnotaleapyear.");</p>
<p>year=2000;//method2</p>
<p>boolean leap;</p>
<p>if(year%4!=0)</p>
<p>leap=false;</p>
<p>else if(year%100!=0)</p>
<p>leap=true;</p>
<p>else if(year%400!=0)</p>
<p>leap=false;</p>
<p>else</p>
<p>leap=true;</p>
<p>if(leap==true)</p>
<p>System.out.println(year+"isaleapyear.");</p>
<p>else</p>
<p>System.out.println(year+"isnotaleapyear.");</p>
<p>year=2050;//method3</p>
<p>if(year%4==0){</p>
<p>if(year%100==0){</p>
<p>if(year%400==0)</p>
<p>leap=true;</p>
<p>else</p>
<p>leap=false;</p>
<p>}else</p>
<p>leap=false;</p>
<p>}else</p>
<p>leap=false;</p>
<p>if(leap==true)</p>
<p>System.out.println(year+" is a leap year.");</p>
<p>else</p>
<p>System.out.println(year+" is not a leap year.");</p>
<p>}</p>
<p>}</p>
<p>运行结果为</p>
<p>C:\>java LeapYear</p>
<p>1989 is not a leap year.</p>
<p>2000 is a leap year.</p>
<p>2050 is not a leap year.</p>
<p>该例中,方法1用一个逻辑表达式包含了所有的闰年条件,方 ?2使用了if-else语句的特殊
形式,方法3则通过使用大括号{}对if-else进行匹配来实现闰年的 ?断。大家可以根据程序来
对比这三种方法,体会其中的联系和区别,在不同的场合选用适 ?的方法。</p>
<p>4.1.2多分支语句switch</p>
<p>switch语句根据表达式的值来执行多个操作中的一个,它的
般格式如下:</p>
<p>switch (expression){</p>
<p>case value1:statement1;</p>
<p>break;</p>
<p>case value2:statement2;</p>
<p>break;</p>
<p>…………</p>
<p>case valueN:statemendN;</p>
<p>break;</p>
<p>[default:defaultStatement;]</p>
<p>}</p>
<p>1.表达式expression可以返回任一简单类型的值(如整型、实? 、字符型),多分支语句把
表达式返回的值与每个case子句中的值相比。如果匹配成功,则 ?行该case子句后的语句序
列。</p>
<p>2.case子句中的值valueI必须是常量,而且所有case子句中的值
是不同的。</p>
<p>3.default子句是任选的。当表达式的值与任一case子句中的?
都不匹配时,程序执行 default后面的语句。如果表达式的值与任一case子句中的值都不
?配且没有default子句,则程 序不作任何操作,而是直接跳出switch语句。</p>
<p>4.break语句用来在执行完一个case分支后,使程序跳出switch语 ?,即终止switch语句的执行
。因为case子句只是起到一个标号的作用,用来查找匹配的入口 ?从此处开始执行,对后面
的case子句不再进行匹配,而是直接执行其后的语句序列,因此
该在每个case分支后,要用 break来终止后面的case分支语句的执行。
在一些特殊情况下,多个不同的case值要执行一组相同的操 ,这时可以不用break。</p>
<p>5.case分支中包括多个执行语句时,可以不用大括号{}括起。</p>
<p>6.switch语句的功能可以用if-else来实现,但在某些情况下,使 switch语句更简炼,可读性强
,而且程序的执行效率提高。</p>
<p>7.举例:</p>
<p>例4.3.根据考试成绩的等级打印出百分制分数段。</p>
<p>public class GradeLevel{</p>
<p>public static void main(String args[]){</p>
<p>System.out.println("\n**firstsituation**");</p>
<p>char grade='C';//normaluse</p>
<p>switch(grade){</p>
<p>case 'A':System.out.println(grade+" is 85~100");</p>
<p>break; case 'B':System.out.println(grade+" is 70~84");</p>
<p>break; case 'C':System.out.println(grade+" is 60~69");</p>
<p>break; case 'D':System.out.println(grade+" is <60");</p>
<p>break; default:System.out.println("input error");</p>
<p>} System.out.println("\n**secondsituation**");</p>
<p>grade='A';∥creat error without break statement</p>
<p>switch(grade){</p>
<p>case 'A':System.out.println(grade+"is85~100");</p>
<p>case 'B':System.out.println(grade+"is70~84");</p>
<p>case 'C':System.out.println(grade+"is60~69");</p>
<p>case 'D':System.out.println(grade+"is<60");</p>
<p>default:System.out.println("inputerror");</p>
<p>} System.out.println("\n**thirdsituation**");</p>
<p>grade='B';∥severalcasewithsameoperation</p>
<p>switch(grade){</p>
<p>case 'A':</p>
<p>case 'B':</p>
<p>case 'C':System.out.println(grade+"is>=60");</p>
<p>break; case 'D':System.out.println(grade+"is<60");</p>
<p>break; default:System.out.println("inputerror");</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>运行结果为</p>
<p>C:\>java GradeLevel</p>
<p>****first situation****</p>
<p>C is 60~69</p>
<p>****second situation****</p>
<p>A is 85~100</p>
<p>A is 70~84</p>
<p>A is 60~69</p>
<p>A is <60</p>
<p>input error</p>
<p>****third situation****</p>
<p>B is >=60</p>
<p>从该例中我们可以看到break语句的作用。</p>
<p>4.1.3break语句</p>
<p>1.在switch语中,break语句用来终止switch语句的执行。使程序 switch语句后的第一个语句
开始执行。</p>
<p>2.在Java中,可以为每个代码块加一个括号,一个代码块通常 用大括号{}括起来的一段
代码。加标号的格式如下:</p>
<p>BlockLabel:{codeBlock}</p>
<p>break语句的第二种使用情况就是跳出它所指定的块,并从紧 ?该块的第一条语句处执
行。其格式为:</p>
<p>break BlockLabel;</p>
<p>例如:</p>
<p>a:{……//标记代码块a</p>
<p>b:{……//标记代码块b</p>
<p>c:{……//标记代码块c</p>
<p>breakb;</p>
<p>……//willnotbeexecuted</p>
<p>}</p>
<p>……//willnotbeexecuted</p>
<p>}</p>
<p>……//willnotbeexecuted</p>
<p>}</p>
<p>……/executefromhere</p>
<p>}</p>
<p>3.与C、C++不同,Java中没有goto语句来实现任意的跳转,因为go to语句破坏程序的可读性
,而且影响编译的优化。但是从上例可以看出,Java用break来实现g oto语句所特有的一些优点
。如果break后所指定的标号不是一个代码块的标号,而是一个? 句,则这时break完全实现
goto的功能。不过应该避免这种方式的使用。</p>
<p><a href="grade2.asp.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/grade2.asp.htm">目录</a>
<ul>
<li><a HREF="java1.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java1.htm">Java入门(一)</a></li>
<li><a HREF="java2.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java2.htm" >Java入门(二)</a></li>
<li><a HREF="java3.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java3.htm">Java入门(三)</a></li>
<li><a HREF="java4.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java4.htm">Java入门(四)</a></li>
<li><a HREF="java5.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java5.htm">Java入门(五)</a></li>
<li><a HREF="java6.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java6.htm">Java入门(六)</a></li>
<li><a HREF="java7.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java7.htm">Java入门(七)</a></li>
<li><a HREF="java8.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java8.htm">Java入门(八)</a></li>
<li><a HREF="java9.htm" tppabs="http://www.xm.zz.ha.cn/wsxt/dn/java9.htm">Java入门(九)</a></li>
</ul>
</td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -