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
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcBnYldHL0FWby9mZvwVPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsAjMfd3bkFGazxCMx8VesATMfhHLlN3XnxCMz8FdsYkRGZkRG9lcvx2bjxSa2EWNhJTW1AlUxEFeVRUUfRHelRHL2EzXlpXazxyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuQzM5cDM3M2N3UDZiVmYyYzX5MDNycTMxAzLcdDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
思考題:
程式執行多分支的時候,是否隻要滿足其中一個分支的條件,就不再進行後面的分支?
注意:當然按照從上到下,從左到右的執行順序
思路:
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
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
思考題:
如果在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();
}
}
}
可以從結果中看出,如果去掉break,switch語句就會執行所有分支。