04.Java 流程控制

落落的学习發表於2024-05-01

1.使用者互動 Scanner

Scanner 物件:獲取使用者的輸入
基本語法:Scanner s = new Scanner(System.in);
透過 Scanner 類的 next() 和 nextLine() 方法獲取輸入的字串,在讀取前一般使用 hasNext() 和 hasNextLine() 判斷是否還有輸入的資料。

next():

  1. 一定要讀取到有效字元後才可以結束輸入;
  2. 對輸入有效字元之前遇到的空白,next() 方法會自動將其去掉;
  3. 只有輸入有效字元後才將其後面輸入的空白作為分割符或結束符;
  4. next() 不能得到帶有空格的字串。

nextLine():

  1. 以 Enter 為結束符,也就是說 nextLine() 方法返回的是輸入回車之前的所有字元;
  2. 可用獲得空白。

注意:此物件中還有其它的型別方法,如:nextInt()、hasNextInt()
Demo1.java

public class Demo1 {
    public static void main(String[] args) {
        // 建立一個掃描器物件,用於接收鍵盤資料
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用 next 方式接收");

        // 判斷使用者有沒有輸入字串
        //if (scanner.hasNextLine())
		if (scanner.hasNext()){
            // 使用 next 方式接收
            // String str = scanner.nextLine();
			String str = scanner.next();
            System.out.println("輸出的內容為:"+str);
        }

        // 凡是屬於 IO 流的類,如果不關閉會一直佔用資源,要養成好習慣用完就關掉
        scanner.close();
    }
}

2.順序結構

除非特別說明,否則按順序一行一行執行

3.選擇結構

3.1.if 選擇結構

語法

if (條件1){
    // 命令語句
} else if (條件2){
    // 命令語句
} else if (條件3){
    // 命令語句
} else{
    // 命令語句
}

3.2.switch 選擇結構

變數型別

  1. byte、short、int 或者 char
  2. 從 Java SE 7 以後,switch 支援字串 String 型別了
  3. case 標籤必須為字串常量或字面量(透過 hashCode 來對比)

語法

switch(expression){
    case value1 :
        //語句
        break; //可選
    case value2 :
        //語句
        break; //可選
    default :
        //語句
}

支援字串常量:

String name="小明";
switch(name){
    case "小明" :
        System.out.println("小明");
        break;
    case "小紅" :
        System.out.println("小紅");
        break;
    default :
        System.out.println("小江");
}

4.迴圈結構

4.1.while 迴圈

語法:

while(布林表示式){// 只要表示式成立就一直迴圈
    //迴圈內容
}

1到100的和:

int i = 0;
int sum = 0;
while(i<=100){
    sum += i;
}
System.out.println("sum="+sum);

4.2.do...while 迴圈

語法:先執行一遍迴圈內容,再進行布林表示式判斷

do{
    // 迴圈內容
} while(布林表示式)

4.3.for 迴圈

語法

for(初始化; 布林表示式; 更新){
    // 迴圈語句
}

計算 1-100 的和:

int sum;
for(int i=0; i <= 100; i++){
    sum += i;
}
System.out.println("sum="+sum);
// 死迴圈:for(;;){}

九九乘法表:

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

4.3.增強 for 迴圈

語法

int[] numbers = {10,20,30,40,50}
for(int x:numbers){// for(int i=0;i<numbers.length;i++)(sout(numbers[i]);)
    System.out.println(x);
}

5.break & continue

break:跳出所有的迴圈
continue:跳出本次迴圈
goto 關鍵字:Java 中沒有goto,但有一些 goto 的影子--帶標籤(指後面跟一個冒號的識別符號,如:label:)的break和continue(不建議使用)

6.練習

列印三角形:

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