290 likes | 583 Views
流程控制. 大綱 傳遞參數給 main() 方法 流程控制的用途與種類 if 判斷敘述 switch 判斷敘述 . 傳遞參數給 main 方法(1/5). 由於這一節的範例執行時,需要傳遞一些資料給程式,以便進行測試。本書將使用傳遞參數給 main() 方法,進行資料的傳遞。 欲傳遞參數給 main() 方法時, main() 方法的宣告語法如下: public static void main(String args[]) { 程式敘述; …… } . 傳遞參數給 main 方法(2/5).
E N D
流程控制 • 大綱 • 傳遞參數給main()方法 • 流程控制的用途與種類 • if判斷敘述 • switch 判斷敘述
傳遞參數給main方法(1/5) • 由於這一節的範例執行時,需要傳遞一些資料給程式,以便進行測試。本書將使用傳遞參數給main()方法,進行資料的傳遞。 • 欲傳遞參數給main()方法時,main()方法的宣告語法如下: public static void main(String args[]) { 程式敘述; …… }
傳遞參數給main方法(2/5) • 在main()方法中,欲取得傳入的參數時,需利用args[]陣列。若執行程式時,傳入了三個參數,在main()方法中,這三個參數將可依序由args[0]、args[1]、args[2]取得。 • 執行程式時,欲傳入參數時,則運用下面的語法: Java程式名稱 參數1 參數2 參數3 … 如:『Java Input1 15 』 • Example
Example:Input2.java public class Input2 { public static void main(String args[]) { System.out.println("輸入的第一個資料為" + args[0]); System.out.println("輸入的第二個資料為" + args[1]); System.out.println("輸入的第三個資料為" + args[2]); } }
傳遞參數給main方法(3/5) • 當main()方法透過args[]陣列取得的參數值,型態均為字串,使用時,有時需要將字串轉換成數值或者其他型別 • 可以利用某型態之類別的方法進行轉換,其語法如下: 型別類別.parseXXX ( String 字串 )
傳遞參數給main方法(4/5) • 下表為各型類別以及用於轉換字串的方法 類別 方法 Integer parseInt Float parseFloat Double parseDouble
傳遞參數給main方法(5/5) • 將『true』或『false』字串,轉換為 boolean 值時,則須利用 Boolean 類別的 valueOf( ) 方法,該方法為類別方法。其語法如下: Boolean.valueOf ( String 字串 ) • Example
Example:parse.java public class parse { public static void main(String args[]) { System.out.println("輸入資料為" + args[0]); float f = Float.parseFloat(args[0]); //將傳入資料轉換為浮點數 System.out.println("轉換成數值後為" + f); } }
流程控制的用途與種類(1/4) • 流程控制分為兩類 • 判斷敘述 - 是利用條件式,進而決定要執行哪一個程式區段 • 迴圈 - 是利用條件式,控制某程式區段的重複執行
流程控制的用途與種類(2/4) • 判斷結構最基本類型的語法如下所示: if ( 條 件 式 ) 程 式 敘 述 ;
流程控制的用途與種類(3/4) • 程式敘述不止一行時,則需用『{…}』,將敘述定義為一個區塊 if ( 條 件 式 ) { 程 式 敘 述 ; …… }
流程控制的用途與種類(4/4) • 迴圈控制語法如下所示: while ( 條件式 ) { 程式敘述 ; …… }
if判斷敘述 • if判斷結構可分為兩類 • 單一條件判斷敘述:利用一條件式控制程式是否執行某程式敘述或由兩程式敘述中擇一執行。此判斷敘述將利用if…else…建立 • 多條件判斷敘述:利用多種條件控制程式所執行的敘述,此判斷敘述將以 if…else if...else…建立
if判斷敘述(1/4) - 單一條件判斷敘述 • 語法一: if ( 條件式 ) { 程式敘述 ; …… }
條件式 真 假 程式敘述 離開判斷式 if判斷敘述(2/4) - 單一條件判斷敘述 進入判斷式 • 執行流程圖如右 • Example
Example:IfSTMT.java public class IfSTMT { public static void main(String args[]) { int a = Integer.parseInt(args[0]); //轉換輸入字串為數值 if (a >= 100 & a <= 200) //判斷數值是否介於100至200之間 System.out.println("數值介於100至200之間"); //如果上述符合條件則顯示此行 } }
if判斷敘述(3/4) - 單一條件判斷敘述 • 語法二:(兩程式敘述擇一執行) if ( 條件式 ) { 程式敘述一 ; …… ; } else { 程式敘述二 ; …… ; }
進入判斷式 條件式 假 真 程式敘述 程式敘述 離開判斷式 if判斷敘述(4/4) - 單一條件判斷敘述 • 執行流程如右 • Example
Example:IfElse.java public class IfElse { public static void main(String args[]) { int a = Integer.parseInt(args[0]); //轉換輸入為數值 if (a <= 100) //判斷輸入的數值大於或小於100 { System.out.println("數值小於或等於100"); //如果輸入數值小於或等於100則顯示此行 } else { System.out.println("數值大於100"); //如果輸入數值大於100則顯示此行 } } }
if判斷敘述(1/4) -多條件判斷敘述 • 語法如下: if ( 條件式A ) { 程式敘述一 ; …… } else if ( 條件式B ) { 程式敘述二 ; …… } else if …… …… else { 程式敘述N ; }
進入判斷式 假 假 假 假 條件式A 條件式B 真 程式敘述一 條件式C 真 真 程式敘述二 條件式… 程式敘述三 程式敘述N (else if敘述) 程式敘述… 離開判斷式 if判斷敘述(2/4) -多條件判斷敘述 • 執行流程圖如左 • Example
Example: IfElseIfElse.java public class IfElseIfElse { public static void main(String args[]) { int a = Integer.parseInt(args[0]); //轉換輸入為數值 if (a < 100) //判斷輸入的是否為數字 { System.out.println("這個數值小於100"); //如果數值小於100則顯示此行 } else if(a >= 100 & a <= 200) { System.out.println("這個數值介於100至200之間"); //如果數值介於100至200之間則顯示此行 }else System.out.println("這個數值超過200"); //如果數值超過200則顯示此行 } }
if判斷敘述(3/4) -多條件判斷敘述 if ( 條件式A ) { } • 巢狀判斷敘述 if ( 條件式B ) 程式敘述一 ; else 程式敘述二 ; else { } if ( 條件式C ) 程式敘述三 ; else 程式敘述四 ;
進入判斷式 真 假 條件式A 條件式B 條件式C 假 真 假 真 程式敘述一 程式敘述二 程式敘述三 程式敘述四 離開判斷式 if判斷敘述(4/4) -多條件判斷敘述 • 執行流程圖如右 • Example
Example: NestedIf.java public class NestedIf { public static void main(String args[]) { int year = 2130; //設定欲判斷之年 System.out.print("西元" + year + "年"); if(year % 4 == 0) //可被4除盡 { if(year % 100 == 0) //可被4、100除盡 { if(year % 400 == 0) //可被4、100、400除盡 System.out.println(",是閏年!"); else //可被4、100除盡,不可被400除盡 System.out.println(",不是閏年!"); }else //可被4除盡,不可被100除盡 System.out.println(",是閏年!"); } else //不可被4除盡 System.out.println(",不是閏年!"); } }
switch 判斷敘述 • 語法: switch 運算式(或變數){ } case 條件值一 : 程式敘述一; break; case 條件值二 : 程式敘述二; ……… break; default: 程式敘述N; break;
進入判斷式 計算switch 後的條件值 條件值一 程式敘述二 真 假 條件值二 離開判斷式 程式敘述三 真 假 … 假 default 程式敘述N • 執行流程圖如左,請參考範例5-9(p.5-25) 、範例5-10(p.5-26)
Example: SwitchCase.java public class SwitchCase { public static void main(String args[]) { int a = Integer.parseInt(args[0]); switch (a) { case 1: //判斷輸入的是否為1 System.out.println("1號車站票價12元"); break; case 2: //判斷輸入的是否為2 System.out.println("2號車站票價24元"); break; default: System.out.println("抱歉!沒有這一站!"); //如果不是1或2號車站則執行此程式區段 break; } } }
Example: SwitchCase2.java public class SwitchCase2 { public static void main(String args[]) { char sex = 'm'; switch (sex) { case 'M': //判斷輸入的字元是否為M case 'm': //判斷輸入的字元是否為m System.out.println("您是男性!"); break; case 'F': //判斷輸入的字元是否為F case 'f': //判斷輸入的字元是否為f System.out.println("您是女性!"); break; default: System.out.println("無法判斷您的性別耶!"); //超過設定範圍則執行此程式區段 break; } } }