关闭

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

378人阅读 评论(0) 收藏 举报
分类:

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

 

 

思考题:

程序执行多分支的时候,是否只要满足其中一个分支的条件,就不再进行后面的分支?

注意:当然按照从上到下,从左到右的执行顺序

 

思路:

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中的可用数据类型主要是:

允许byteshortintcharenum

 

思考题:

编写一个程序,该程序可以接受一个字符,比如: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();

}

}

 

可以从结果中看出,如果去掉breakswitch语句就会执行所有分支。

 

可以看出,分支语句只要按照执行顺序满足了前面的其中一个条件,后面的语句就不会再执行。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:33775次
    • 积分:534
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:17篇
    • 译文:0篇
    • 评论:2条
    最新评论