二级JAVA第四章辅导:流程控制分支语句
文章作者 100test 发表时间 2007:03:10 18:46:04
来源 100Test.Com百考试题网
§4.1分支语句 
分支语句提供了一种控制机制,使得程序的执行可以跳过这些语句不执行,而转去执行特定的语句。 
4.1.1条件语句if-else. 
if-else语句根据判定条件的真假来执行两种操作中的一种,格式为: 
if(boolean-expression) 
statement1. 
[else 
statement2.] 
1.布尔表达式boolean-expression是任意一个返回布尔型数据的达式(这比C、C  的限制要严格)。 
2.每个单一的语句后都必须有分号。 
3.语句statement1,statement2可以为复合语句,这时要用大括号{}括起。建议对单一的语句也用大括号括起,这样程序的可读性强,而且有利于程序的扩充(可以在其中填加新的语句)。{}外面不加分号。 
4.else子句是任选的。 
5.若布尔表达式的值为true,则程序执行statement1,否则执行statement2。 
6.if-else语句的一种特殊形式为: 
if(expression1){ 
statement1 
}else if(expression2){ 
statement2 
}...... 
}else if(expressionM){ 
statementM 
}else{ 
statementN 
} 
else子句不能单独作为语句使用,它必须和if配对使用。else总是与离它最近的if配对。可以通过使用大括号{}来改变配对关系。 
7.举例: 
例4.1比较两个数的大小,并按从小到大的次序输出。 
public class CompareTwo{ 
public static void main(Stringargs[]){ 
double d1=23.4. 
double d2=35.1. 
if(d2>=d1) 
System.out.println(d2 ">=" d1). 
else 
System.out.println(d1 ">=" d2). 
} } 
运行结果为: 
C:\>java CompareTwo 
35.1>=23.4 
例4.2判断某一年是否为闰年。 
闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除.②能被4整除,又能被100整除。 
public class LeapYear{ 
public static void main(String args[]){ 
int year=1989.//method1 
if((year%4==0&.&.year0!=0)||(year@0==0)) 
System.out.println(year "isaleapyear."). 
else 
System.out.println(year "isnotaleapyear."). 
year=2000.//method2 
boolean leap. 
if(year%4!=0) 
leap=false. 
else if(year0!=0) 
leap=true. 
else if(year@0!=0) 
leap=false. 
else 
leap=true. 
if(leap==true) 
System.out.println(year "isaleapyear."). 
else 
System.out.println(year "isnotaleapyear."). 
year=2050.//method3 
if(year%4==0){ 
if(year0==0){ 
if(year@0==0) 
leap=true. 
else 
leap=false. 
}else 
leap=false. 
}else 
leap=false. 
if(leap==true) 
System.out.println(year " is a leap year."). 
else 
System.out.println(year " is not a leap year."). 
} 
} 
运行结果为 
C:\>java LeapYear 
1989 is not a leap year. 
2000 is a leap year. 
2050 is not a leap year. 
该例中,方法1用一个逻辑表达式包含了所有的闰年条件,方法2使用了if-else语句的特殊形式,方法3则通过使用大括号{}对if-else进行匹配来实现闰年的判断。大家可以根据程序来对比这三种方法,体会其中的联系和区别,在不同的场合选用适当的方法。 
4.1.2多分支语句switch 
switch语句根据表达式的值来执行多个操作中的一个,它的般格式如下: 
switch (expression){ 
case value1:statement1. 
break. 
case value2:statement2. 
break. 
………… 
case valueN:statemendN. 
break. 
[default:defaultStatement.] 
} 
1.表达式expression可以返回任一简单类型的值(如整型、实型、字符型),多分支语句把表达式返回的值与每个case子句中的值相比。如果匹配成功,则执行该case子句后的语句序列。 
2.case子句中的值valueI必须是常量,而且所有case子句中的值是不同的。 
3.default子句是任选的。当表达式的值与任一case子句中的?都不匹配时,程序执行default后面的语句。如果表达式的值与任一case子句中的值都不?配且没有default子句,则程序不作任何操作,而是直接跳出switch语句。 
4.break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。因为case子句只是起到一个标号的作用,用来查找匹配的入口并从此处开始执行,对后面的case子句不再进行匹配,而是直接执行其后的语句序列,因此该在每个case分支后,要用break来终止后面的case分支语句的执行。在一些特殊情况下,多个不同的case值要执行一组相同的操,这时可以不用break。 
5.case分支中包括多个执行语句时,可以不用大括号{}括起。 
6.switch语句的功能可以用if-else来实现,但在某些情况下,使switch语句更简炼,可读性强,而且程序的执行效率提高。 
7.举例: 
例4.3.根据考试成绩的等级打印出百分制分数段。 
public class GradeLevel{ 
public static void main(String args[]){ 
System.out.println("\n**firstsituation**"). 
char grade= C .//normaluse 
switch(grade){ 
case  A :System.out.println(grade " is 85~100"). 
break. case  B :System.out.println(grade " is 70~84"). 
break. case  C :System.out.println(grade " is 60~69"). 
break. case  D :System.out.println(grade " is <60").