?? 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 + -