public class CompareTwo{
public static void main( String args[] ){
double d1=23.4;
double d2=35.1;
if(d2>=d1)
System.out.println(d2+" >= "+d1);
else
System.out.println(d1+" >= "+d2);
}
}
運(yùn)行結(jié)果為:
C:\>java CompareTwo
35.1 >= 23.4
例.判斷某一年是否為閏年。
閏年的條件是符合下面二者之一:①能被4整除,但不能被100整除;②能被4整除,又能被100整除。
public class LeapYear{
public static void main( String args[] ){
int year=1989; //method 1
if( (year%4==0 && year%100!=0) || (year%400==0) )
System.out.println(year+" is a leap year.");
else
System.out.println(year+" is not a leap year.");
year=2000; //method 2
boolean leap;
if( year%4!=0 )
leap=false;
else if( year%100!=0 )
leap=true;
else if( year%400!=0 )
leap=false;
else
leap=true;
if( leap==true )
System.out.println(year+" is a leap year.");
else
System.out.println(year+" is not a leap year.");
year=2050; //method3
if( year%4==0){
if( year%100==0 ){
if( year%400==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.");
}
}
運(yùn)行結(jié)果為
C:\>java LeapYear
1989 is not a leap year.
2000 is a leap year.
2050 is not a leap year.
該例中,方法1用一個(gè)邏輯表達(dá)式包含了所有的閏年條件,方法2使用了if-else語句的特殊形式,方法3則通過使用大括號(hào){}對if-else進(jìn)行匹配來實(shí)現(xiàn)閏年的判斷。大家可以根據(jù)程序來對比這三種方法,體會(huì)其中的聯(lián)系和區(qū)別,在不同的場合選用適合的方法。
多分支語句switch
switch語句根據(jù)表達(dá)式的值來執(zhí)行多個(gè)操作中的一個(gè),它的般格式如下:
switch (expression){
casevalue1:statement1;
break;
casevalue2:statement2;
break;
…………
casevalueN:statemendN;
break;
[default:defaultStatement;]
}
1.表達(dá)式expression可以返回任一簡單類型的值(如整型、實(shí)數(shù)型、字符型),多分支語句把表達(dá)式返回的值與每個(gè)case子句中的值相比。如果匹配成功,則運(yùn)行該case子句后的語句序列。
2.case子句中的值values必須是常量,而且所有case子句中的值是不同的。
3.default子句是任選的。當(dāng)表達(dá)式的值與任一case子句中的都不匹配時(shí),程序執(zhí)行default后面的語句。如果表達(dá)式的值與任一case子句中的值都不匹配且沒有default子句,則程序不作任何操作,而是直接跳出switch語句。
4.break語句用來在執(zhí)行完一個(gè)case分支后,使程序跳出switch語句,即終止switch語句的執(zhí)行。因?yàn)閏ase子句只是起到一個(gè)標(biāo)號(hào)的作用,用來查找匹配的入口,從此處開始執(zhí)行,對后面的case子句不再進(jìn)行匹配,而是直接執(zhí)行其后的語句序列,因此該在每個(gè)case分支后,要用break來終止后面的case分支語句的執(zhí)行。
在一些特殊情況下,多個(gè)不同的case值要執(zhí)行一組相同的操作,這時(shí)可以不用break。
5.case分支中包括多個(gè)執(zhí)行語句時(shí),可以不用大括號(hào){}括起。
6.switch語句的功能可以用if-else來實(shí)現(xiàn),但在某些情況下,使switch語句更簡煉,可讀性強(qiáng),而且程序的執(zhí)行效率提高。
7.舉例:
例.根據(jù)考試成績的等級(jí)打印出百分制分?jǐn)?shù)段。
public class GradeLevel{
public static void main( String args[] ){
System.out.println("\n** first situation **");
char grade='C'; //normal use
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");
break;
default : System.out.println("input error");
}
System.out.println("\n** second situation **");
grade='A'; ∥creat error without break statement
switch( grade ){
case 'A' : System.out.println(grade+" is 85~100");
case 'B' : System.out.println(grade+" is 70~84");
case 'C' : System.out.println(grade+" is 60~69");
case 'D' : System.out.println(grade+" is <60");
default : System.out.println("input error");
}
System.out.println("\n** third situation **");
grade='B'; ∥several case with same operation
switch( grade ){
case 'A' :
case 'B' :
case 'C' : System.out.println(grade+" is >=60");
break;
case 'D' : System.out.println(grade+" is <60");
break;
default : System.out.println("input error");
}
}
}
運(yùn)行結(jié)果為
C:\>java GradeLevel
**** first situation ****
C is 60~69
**** second situation ****
A is 85~100
A is 70~84
A is 60~69
A is <60
input error
**** third situation ****
B is >=60