5 Java 條件分支語句與循環語句

5.1 概述

  計算機源於生活,程序模擬現實生活,從而服務生活。如下生活例子:

  (1)起牀,刷牙,洗臉,喫早餐,上課,回家,睡覺 ----->(順序)
  (2)如果時間不太夠,打個滴滴快車,如果時間夠,坐個地鐵 ---->(選擇)
  (3)擼完這個接口,又擼下一個接口 ----> (循環)

  因此程序的執行流程有:

  • 順序性
  • 選擇性 (if else switch)
  • 循環性 (for do while)

  順序性就是程序自上往下執行,接下來分別講解條件分支語句與循環語句。

5.2 if 結構語句 (條件分支語句)

5.2.1 if 語句

  語法結構

	if(關係表達式) {
		基本語句體
	}

執行順序:首先判斷關係表達式的結果是 true 或 false,若爲 true,則執行基本語句體;反之不執行。

int i = 10 / 3;
int j = 20 / 4;
if(i > j) {
	System.out.println("i 較大")
}

5.2.2 if else 語句

  語法結構

	if(關係表達式) {
		語句體1;
	} else {
		語句體2;
	}

執行順序:首先判斷關係表達式的結果是 true 或 false,若爲 true,則執行語句體1;反之則執行語句體2。如:我們常見的登錄,用戶輸入密碼,判斷密碼正確與否的操作如下:

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		System.out.println("請輸入密碼:");
		Scanner sca = new Scanner(System.in);
		String password = sca.next();
		if("123456".equals(password)) {
			System.out.println("登錄成功");
		} else {
			System.out.println("用戶名或密碼錯誤!");
		}
	}
}

  Scanner 這個是 java.util 包下的一個類,因此需要 import 關鍵字進行引入,通過 Scanner 類來獲取用戶的輸入。new Scanner(System.in) 是創建一個這個類的對象(之後講解,先照着寫);next() 這個方法獲取輸入的字符串;equals() 方法是 String 類的方法,作用是比較兩個字符串的是否相等(爲啥要特意標爲藍色,之後講解)。

5.2.3 多重 if

  語法結構

	if(關係表達式1) {
		語句體1;
	} else if(關係表達式2){
		語句體2;
	}
	...
	else {
		語句體 n
	}

執行順序:首先判斷關係表達式1的結果是 true 或 false,若爲 true,則執行語句體1;反之繼續判斷關係表達式2,若爲 true,則執行語句體2,依此類推。如:輸入學生成績,判斷學生成績等級,90 分以上(包含 90)爲 A,80 ~ 90 爲 B,70 ~ 80 爲 C,60 ~ 70 爲 D,其餘爲 E。

	System.out.println("please input a score:");
	Scanner scanner = new Scanner(System.in);
	int score= scanner.nextInt();
	if(score >= 90) {
		System.out.println("該學生分數等級爲:A");
	} else if(score >= 80) {
		System.out.println("該學生分數等級爲:B");
	} else if(score >= 70) {
		System.out.println("該學生分數等級爲:C");
	} else if(score >= 60) {
		System.out.println("該學生分數等級爲:D");
	} else {
		System.out.println("該學生分數等級爲:E");
	}

5.2.3 嵌套 if

  語句結構:

if(條件表達式 1) {
	if(條件表達式 2) {
		語句體1;
	} else {
		語句體2;
	}
}

  執行順序類似上述例子。

5.3 Switch 語句 (條件分支語句)

  語法結構:

switch(表達式) {
	case 值 1 :
		語句體1;
		break;
	case 值 2 :
		語句體 2;
		break;
		...
	default :
		語句體 n;
		break;
}
  • case 後面跟的是要和表達式進行比較的值。
  • break 表示中斷,結束的意思,用來結束 switch 語句。
  • default 語句表示所有情況都不匹配的時候,就執行該處的內容,和if語句的 else 相似。

    例子:用戶輸入1 ~ 7 的數字,每個數字對應周幾學習什麼課程。
       System.out.println("please input a dayNum:");
       Scanner sca = new Scanner(System.in);
       int dayNum = sca.nextInt();
       switch(dayNum) {
           case 1 :
               System.out.println("週一學 Java 基礎");break;
           case 2 :
               System.out.println("週二學 SQL");break;
           case 3 :
               System.out.println("週三學 JavaScript");break;
           case 4 :
               System.out.println("週四學戀愛學");break;
           case 5 :
               System.out.println("週五學煮飯");break;
           case 6 :
               System.out.println("週六學刺激戰場");break;
           default  :
               System.out.println("週日學王者榮耀");break;
       }

注:

  • case 後面的值不可相同;
  • default 可以忽略寫;
  • break 也可以忽略寫,不過會繼續判斷下去,如上述例子,如果 case 1 後沒有 break,滿足條件後依然會繼續判斷,直到遇到 break 或執行到最後才結束。
  • 在 jdk1.7 之前,switch 後面的表達式只能支持 byte、short、char、int 這幾個基本數據類型和其對應的封裝類型。switch 後面的括號裏面只能放int類型的值,但由於 byte,short,char 類型,它們會 自動 轉換爲 int 類型(精精度小的向大的轉化),所以它們也支持。對於精度比 int 大的類型,比如 long、float,doulble,不會自動轉換爲 int,如果想使用,就必須強轉爲 int,如 (int)float;jdk1.7 後整形,枚舉類型,boolean,字符串都可以。

5.4 for (循環語句)

  語法結構:

for(初始化語句; 條件判斷語句; 條件控制語句) {
	循環體語句;
}

執行流程:

  • (1)執行初始化語句;
  • (2)執行條件判斷語句,如果返回 false,則結束循環;反之第(3)步。
  • (3)執行循環體語句;
  • (4)執行條件控制語句;
  • (5)回到(2)繼續。圖解如下:
    在這裏插入圖片描述

    例子:求出 1~10 之間數據之和。
	int sum = 0;
	for(int i = 1; i <= 10; i++) {
		sum += i;
	}
	System.out.println("1~10 之間數據之和爲:" + sum);

可自行測試嵌套 if else 語句。

5.5 While(循環語句)

  語法結構:

while(判斷條件語句) {
	循環體語句;
	控制條件語句;
}

執行流程:

  • (1)執行條件判斷語句,若返回 false,則結束,反之執行第(2)步;
  • (2)執行循環體;
  • (3)執行條件控制語句;
  • (4)回到(1)繼續。圖解如下:
    在這裏插入圖片描述

    例子:求出 1~10 之間數據之和。
	int i = 1;
	int sum = 0;
	while (i <= 10) {
		sum += i;
		 i++;
	}
	System.out.println("1~10 之間數據之和爲:" + sum);

可自行嘗試“輸入登錄密碼,超過 3 次則提示賬戶鎖定,輸入成功則直接跳出”

5.6 do While(循環語句)

  語法結構:

   do {
         循環體語句;
         條件控制語句;
    } while(判斷條件語句);

執行流程:

  • (1)先執行循環體語句;
  • (2)執行條件控制語句;
  • (3)執行條件判斷語句,若返回 false,則結束循環,反之執行第(1)步,圖解如下:
    在這裏插入圖片描述

    例子:求出 1~10 之間數據之和。
	int i = 1;
	int sum = 0;
	do {
		sum += i;
		i++;
	} while(i <= 10);
	System.out.println("1~10 之間數據之和爲:" + sum);

5.7 嵌套循環

  打印如下標誌:

  *****
  ****
  ***
  **
  *

   for(int i = 0; i < 5; i++) {
       for(int j = 5; j > i; j--) {
           System.out.print("*");
       }
       System.out.println();
   }

  打印如下標誌:

  *****
   ****
   ***
    **
    *

   for(int i = 0; i < 5; i++) {
       for(int j = 0; j < i; j++) {
           System.out.print(" ");
       }
       for(int j = 5; j > i; j--) {
           System.out.print("*");
       }
       System.out.println();
   }

  打印九九乘法表:
在這裏插入圖片描述

   for(int i = 1; i <= 9; i++) {
       for(int j = 1; j <= i; j++) {
           System.out.print(j + " * " + i + " = " + i * j + "\t");
       }
       System.out.println();
   }

5.8 break,continue,return(循環語句)

5.8.1 break

  break 在 switch 中已經講解,在循環語句中是跳出當前循環。如:打印 1~10 之間的數字,如果中間遇到 3 的倍數則退出循環

   for(int i = 1; i < 10; i++){
       if(i % 3 == 0) {
           break;
       }
       System.out.print(i + “\t”);
   }

  輸出結果是:1  2

5.8.2 continue

  在循環語句中用於結束本次循環。如:打印 1~10 之間的數字,如果中間遇到 3 的倍數則跳過不打印,繼續打印後面的數據。

   for(int i = 1; i < 10; i++){
       if(i % 3 == 0) {
           continue;
       }
       System.out.print(i + "\t");
   }

  輸出結果是:1  2  4  5  7  8

5.8.3 return

  return 語句用於結束當前正在執行的方法,並將控制權返回給調用此方法的方法。其有兩種形式:

  • 沒有返回值的方法

  不帶返回值的 return 語句只能用於返回類型爲 void 的方法。在返回類型爲 void 的方法中,return 返回語句不是必需的,隱式的 return 發生在方法最後一個語句完成時。main 方法就是這樣一個例子。一般情況下,返回類型是 void 的方法使用 return 語句是爲了引起方法的強制結束,這種 return 的用法類似於循環結構中的 break 語句的作用。

  • 有返回值的方法
      任何返回類型不是 void 的方法必須返回一個值,而且這個返回值的類型必須和方法的返回類型相同,或者能隱式轉化爲方法的返回類型。
    public static void main(String[] args) {
        System.out.println("請分別輸入要連個要判斷大小的數字(空格隔開):");
        Scanner scanner = new Scanner(System.in);
        int num1 = scanner.nextInt();
        int num2 = scanner.nextInt();
        System.out.println("最大值爲:" + getMax(num1, num2));
    }

    /**
     * 判斷是否爲偶數,是返回true
     * @param num1
     * @param num2
     * @return
     */
    public static int getMax(int num1, int num2) {
        return num1 > num2 ? num1 : num2;
    }

可到牛客網做練習。

至此,Java 條件分支語句與循環語句大體瞭解了,接下來請看《 6 Java 方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章