二级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").