Java語言基礎(四) : 選擇結構之 if 語句
在Java中,選擇結構有:if語句和switch語句。
if語句的語法格式1:
if(比較表示式) {
語句體;
}
它的執行流程:
1.先計算比較表示式的值,看其返回值是true還是false。
2.如果是true,就執行語句體;
3.如果是false,就不執行語句體;
下面通過程式碼來演示if語句:
public class IfDemo01 {
public static void main(String[] args) {
int x = 10;
if(x == 10 ) {
System.out.println("x等於10");
}
if(x == 20) {
System.out.println("x等於20");
}
System.out.println("over");
}
}
我們在使用if語句的時候需要注意什麼呢?
1.比較表示式無論簡單還是複雜,結果必須是boolean型別
2.if語句控制的語句體如果是一條語句,大括號可以省略;如果是多條語句,就不能省略。建議永遠不要省略。
3.一般來說:有左大括號就沒有分號,有分號就沒有左大括號
如下程式碼:
public class IfDemo02 {
public static void main(String[] args) {
int x = 10;
if(x == 10) {
System.out.println("x等於10");
}
if((x > 5) || (x == 10)) {
System.out.println("x大於或者等於10");
}
System.out.println("-------------------" );
int a = 100;
/*
if(a == 100) {
System.out.println("a的值是100");
}
*/
if(a != 100) {
System.out.println("a的值是100");
System.out.println("over");
}
System.out.println("-------------------");
int b = 100;
if(b != 100); //這裡其實是有語句體的,只不過是空語句體。
//程式碼塊
{
System.out.println("b的值是100");
System.out.println("over");
}
}
}
if語句的語法格式2:
if(比較表示式) {
語句體1;
}else {
語句體2;
}
它的執行流程:
1.首先計算比較表示式的值,看其返回值是true還是false。
2.如果是true,就執行語句體1;
3.如果是false,就執行語句體2;
我們需要注意的是:else後面是沒有比較表示式的,只有if後面有。
如下我的程式碼:
public class IfDemo03 {
public static void main(String[] args) {
//判斷兩個資料是否相等
int a = 10;
int b = 20;
if(a == b) {
System.out.println("a等於b");
}else {
System.out.println("a不等於b");
}
}
}
由於if語句的第二種格式剛才也完成了三元運算子可以完成的效果。所以,我們就認為他們可以完成一樣的操作。但是,他們就一點區別沒有嗎?肯定不是。
區別:
三元運算子實現的,都可以採用if語句實現。反之不成立。
什麼時候if語句實現不能用三元改進呢?
當if語句控制的操作是一個輸出語句的時候就不能。
為什麼呢?
因為三元運算子是一個運算子,運算子操作完畢就應該有一個結果,而不是一個輸出。
如下看我的程式碼:
public class IfDemo04 {
public static void main(String[] args) {
//獲取兩個資料的最大值
int a = 10;
int b = 20;
//用if語句實現
int max1;
if(a > b) {
max1 = a;
}else {
max1 = b;
}
System.out.println("max1:"+max1);
//用三元改進
int max2 = (a > b)? a: b;
System.out.println("max2:"+max2);
System.out.println("----------");
//判斷一個數據是奇數還是偶數,並輸出是奇數還是偶數
int x = 100;
if(x%2 == 0) {
System.out.println("100是一個偶數");
}else {
System.out.println("100是一個奇數");
}
//用三元改進
//這種改進是錯誤的。
//String s = (x%2 == 0)?System.out.println("100是一個
//偶數");:System.out.println("100是一個奇數");;
}
}
if語句的語法格式3:
if(比較表示式1) {
語句體1;
}else if(比較表示式2) {
語句體2;
}else if(比較表示式3) {
語句體3;
}
...
else {
語句體n+1;
}
它的執行流程:
1.首先計算比較表示式1看其返回值是true還是false,
2.如果是true,就執行語句體1,if語句結束。
3.如果是false,接著計算比較表示式2看其返回值是true還是false,如果是true,就執行語句體2,if語句結束。
4.如果是false,接著計算比較表示式3看其返回值是true還是false,…如果都是false,就執行語句體n+1。
下面通過案例演示if語句語法3,如下:
案例:鍵盤錄入一個成績,判斷並輸出成績的等級。
import java.util.Scanner;
public class IfDemo05 {
public static void main(String[] args) {
//需求:鍵盤錄入一個成績,判斷並輸出成績的等級。
/*
90-100 優秀
80-90 好
70-80 良
60-70 及格
0-60 不及格
*/
//建立鍵盤錄入物件
Scanner sc = new Scanner(System.in);
//錄入資料
System.out.println("請輸入你的考試成績:");
int score = sc.nextInt();
/*
if(score>=90 && score<=100) {
System.out.println("優秀");
}else if(score>=80 && score<90) {
System.out.println("好");
}else if(score>=70 && score<80) {
System.out.println("良");
}else if(score>=60 && score<70) {
System.out.println("及格");
}else {
System.out.println("不及格");
}
*/
//這樣寫已經滿足我的基本要求,但是可能別人在使用的時候,不會按照你要求的資料給出了。
//在做一個程式的基本測試的時候,一定要考慮這樣的幾個問題:
//正確資料,錯誤資料,邊界資料。
//而我們剛才寫的程式並沒有處理錯誤資料,所以這個程式不是很好,要改進
/*
if(score>=90 && score<=100) {
System.out.println("優秀");
}else if(score>=80 && score<90) {
System.out.println("好");
}else if(score>=70 && score<80) {
System.out.println("良");
}else if(score>=60 && score<70) {
System.out.println("及格");
}else if(score>=0 && score<60){
System.out.println("不及格");
}else {
System.out.println("你輸入的成績有誤");
}
*/
//另一種判斷改進
if(score<0 || score>100) {
System.out.println("你輸入的成績有誤");
}else if(score>=90 && score<=100) {
System.out.println("優秀");
}else if(score>=80 && score<90) {
System.out.println("好");
}else if(score>=70 && score<80) {
System.out.println("良");
}else if(score>=60 && score<70) {
System.out.println("及格");
}else {
System.out.println("不及格");
}
}
}