天天看點

四、java流程控制(二)-分支控制

4.2分支控制

讓程式有選擇的支行,分支控制有三種:

1、單分支 2、雙分支 3、多分支

4.2.1 if語句

☆雙分支

if語句:

if(條件表達式)

{

語句;

}else

{

語句;

}

☆多分支

if語句:

if(條件表達式)

{

語句;

}else if(條件表達式)

{

語句;

}else

{

語句;

}

思考題:

編寫一個程式,可以輸入人的年齡,如果該人的年齡大于等于18歲,則輸出“你的年齡大于等于18,要為自己的行為負責!”

分析:

第一步:

在控制台輸入字元

第二步:

判斷控制台的輸入字元,進行相應操作

可以從題目中看出,基本就是兩個情況,如下:

1、年齡小于18歲,未成年人

2、年齡大于等于18歲,輸出資訊

代碼如下:

/*

作者:李俊揮

日期:2013-12-2

功能:判斷輸入的年齡大小,進行分支控制輸出

*/

import java.io.*;

public class Demo

{

public static void main(String []args)

{

//執行控制台輸入,必須要抛出異常

try{

//定義控制台輸入擷取方法

InputStreamReader isr=new InputStreamReader(System.in);

BufferedReader br=new BufferedReader(isr);

//擷取輸入的字元

System.out.println("輸入你的年齡");

String s=br.readLine();

//轉換類型,String->int

int age;

age=Integer.parseInt(s);

//測試擷取資料

//System.out.println("age="+age);

//分支判斷

if(age<18){

System.out.println("你還未成年");

}else{

System.out.println("你已經是成年人,要為自己的行為負責!");

}

}catch(Exception e){

e.printStackTrace();

}

}

//end

四、java流程控制(二)-分支控制

思考題:

程式執行多分支的時候,是否隻要滿足其中一個分支的條件,就不再進行後面的分支?

注意:當然按照從上到下,從左到右的執行順序

思路:

1、定義int a=100

2、編寫if語句,使得a都滿足多個分支的條件,看輸出哪些語句

代碼如下:

/*

作者:李俊揮

日期:2013-12-2

功能:輸入的年齡大小,判斷多分支控制的執行結果

*/

import java.io.*;

public class Demo

{

public static void main(String []args)

{

//執行控制台輸入,必須要抛出異常

try

{

//定義控制台輸入擷取方法

InputStreamReader isr=new InputStreamReader(System.in);

BufferedReader br=new BufferedReader(isr);

//擷取輸入的字元

System.out.println("輸入你的年齡");

String s=br.readLine();

//轉換類型,String->int

int age;

age=Integer.parseInt(s);

//測試擷取資料

//System.out.println("age="+age);

//分支判斷

if(age>1)

{

System.out.println("age>1");

}else if(age>10)

{

System.out.println("a>10");

}else if(age>18)

{

System.out.println("a>18");

}

}catch(Exception e)

{

e.printStackTrace();

} //try catch

}//main

}//Demo

//end

四、java流程控制(二)-分支控制

4.2.2 switch語句

switch語句:

switch(條件表達式)

{

case 常量1:

語句1;

break;

case 常量2:

語句2;

break;

……

case 常量n:

語句n;

break;

default:

語句;

break;

}//switch

//條件表達式資料類型,應該和case的常量類型一緻

注意:

Switch中的可用資料類型主要是:

允許byte、short、int、char、enum等

思考題:

編寫一個程式,該程式可以接受一個字元,比如:a,b,c,d,e,f,g

A表示星期一,b表示星期二……

根據使用者輸入顯示相依的資訊

分析:

1、從控制台擷取相依的字元

2、根據switch判斷輸入的字元

代碼:

/*

 ***********************************************************************

作者:李俊揮

日期:2013-12-2

功能:輸入的字元,根據switch根據輸入字元a,b,c,d,e,f,g

    輸入:a表示星期一,b表示星期二……

 ***********************************************************************

*/

import java.io.*;

public class Demo

{

public static void main(String []args)

{

//執行控制台輸入,必須要抛出異常

try{

//定義控制台輸入擷取方法

InputStreamReader isr=new InputStreamReader(System.in);

BufferedReader br=new BufferedReader(isr);

//擷取輸入的字元

System.out.println("輸入abcdefg,其中一個字元,按回車結束:");

String s=br.readLine();

//轉換類型,String->char

char[] strChar;

//一定要定義資料的下标,不然隻輸入一個字元的話就會報錯

strChar = new char[1];

strChar = s.toCharArray();

char flag;

flag = strChar[0];

//測試擷取資料

//System.out.println("s="+s);

//System.out.println("strChar[0]="+strChar[0]);

//System.out.println("flag="+flag);

//分支判斷

//注意case必須是常量,是以字元必須加單引号'',才不會報錯

switch(flag)

{

case 'a':

System.out.println("星期一");

break;

case 'b':

System.out.println("星期二");

break;

case 'c':

System.out.println("星期三");

break;

case 'd':

System.out.println("星期四");

break;

case 'e':

System.out.println("星期五");

break;

case 'f':

System.out.println("星期六");

break;

case 'g':

System.out.println("星期日");

break;

default:

System.out.println("未定義字元");

break;

}

}catch(Exception e){

e.printStackTrace();

} //try catch

}//main

}//Demo

四、java流程控制(二)-分支控制

思考題:

如果在switch語句中不寫break,會不會像if語句隻執行一個分支呢?

分析:

剛上面的代碼去除break,運作一遍。

代碼:

/*

 ***********************************************************************

作者:李俊揮

日期:2013-12-2

功能:注釋去掉switch語句中的break,驗證是否隻執行一個分支

 ***********************************************************************

*/

import java.io.*;

public class Demo

{

public static void main(String []args)

{

//執行控制台輸入,必須要抛出異常

try{

//定義控制台輸入擷取方法

InputStreamReader isr=new InputStreamReader(System.in);

BufferedReader br=new BufferedReader(isr);

//擷取輸入的字元

System.out.println("輸入abcdefg,其中一個字元,按回車結束:");

String s=br.readLine();

//轉換類型,String->char

char[] strChar;

//一定要定義資料的下标,不然隻輸入一個字元的話就會報錯

strChar = new char[1];

strChar = s.toCharArray();

char flag;

flag = strChar[0];

//測試擷取資料

//System.out.println("s="+s);

//System.out.println("strChar[0]="+strChar[0]);

//System.out.println("flag="+flag);

//分支判斷

//注意case必須是常量,是以字元必須加單引号'',才不會報錯

switch(flag)

{

case 'a':

System.out.println("星期一");

//break;

case 'b':

System.out.println("星期二");

//break;

case 'c':

System.out.println("星期三");

//break;

case 'd':

System.out.println("星期四");

//break;

case 'e':

System.out.println("星期五");

//break;

case 'f':

System.out.println("星期六");

//break;

case 'g':

System.out.println("星期日");

//break;

default:

System.out.println("未定義字元");

//break;

}

}catch(Exception e){

e.printStackTrace();

}

}

四、java流程控制(二)-分支控制

可以從結果中看出,如果去掉break,switch語句就會執行所有分支。

繼續閱讀