5.控制流程【Java溫故系列】

參考自–《Java核心技術卷1》

控制流程

Java使用條件語句循環結構確定控制流程。


1 塊作用域

塊(block)即複合語句,指由一對大括號括起來的若干條簡單的 Java 語句。

塊確定了變量的作用域。一個塊可以嵌套在另一個塊中。

public static void main(String[] args){
	int n;
    ...
    {
        int k;
    } // 變量k只有在該塊中才能被識別 
}

但,不能在嵌套的兩個塊中聲明同名的變量:

public static void main(String[] args){
	int n;
    ...
    {
        int n;  //錯誤,無法通過編譯
    } 
}

2 條件語句

if + else 語句

  • if(condition) statement
  • if(condition) statement1 else statement2

:else 子句與最鄰近的 if 構成一組


3 循環

3.1 while 循環

當條件爲真(true)時執行:

while(condition) statement

3.2 do/while 循環

先執行循環體,再檢測循環條件。循環體至少執行一次。

do statement while(condition)

3.3 for 循環

for 循環語句是支持迭代的一種通用結構,利用每次迭代之後更新的計數器或者類似的變量來控制迭代次數。

for 語句的:

  • 第 1 部分通常用於對計數器初始化(該部分定義的變量作用域爲整個循環體) ;

  • 第 2 部分給出每次新一輪循環執行前要檢測的循環條件 ;

  • 第 3 部分指示如何更新計數器。

for(int i=1;i<=10;i++){
    //這三部分的內部並非固定的,需要靈活使用
	...
}

:在循環中,檢測兩個浮點數是否相等需要格外小心。如:for(double x=0;x!=10;x+=0.1)就可能永遠不會結束。由於舍入的誤差,最終可能得不到準確值(上述 0.1 無法精確地用二進制表示)。

:在 for 循環內部定義的變量,無法在循環體之外使用。因此,如果需要使用,可以先在循環體外部聲明。


4 多重選擇:switch 語句

處理多個選項。

Scanner in = new Scanner(System.in);
System.out.println("Select an option(1,2,3,4)");
int choice = in.nextInt();
switch(choice){
	case 1:
		...
		break;
	case 2:
		...
		break;
	case 3:
		...
		break;
	case 4:
		...
		break;
	default:
		// 1,2,3,4之外的輸入
		...
		break;
}

switch 語句將從與選項值相匹配的 case 標籤處開始執行直到遇到 break 語句,或者執行到 switch 語句的結束處爲止。如果沒有相匹配的 case 標籤,而有 default 子句,就執行 default 子句(壞的輸入)。

:switch 語句使用較少(因爲如果缺少break語句的話,常常會引發錯誤)。


5 中斷控制流程語句

5.1 break
  • 不帶標籤的break(一般使用的)
  • 帶標籤的break(用於跳出多重嵌套的循環語句)

帶標籤的break:

read_data:
while(...){
	...
	for(...){
		...
		if(...)
			break read_data;
			//跳出至標籤指示的while循環
		...
	}
	...
}
//跳出 read_data 循環後繼續由此開始執行以下語句
...

:事實上,可以將標籤應用到任何語句中。

5.2 continue

與 break 一樣,它可以中斷正常的控制流程。continue 語句將控制轉移到最內層循環的首部。

While(...){
	...  
	if(...) 
		continue;  //跳至循環的首部(判斷循環部分)
	...  //如果執行了continue,這部分語句將在此次循環中不執行
}

如果執行了 continue ,則會直接越過 當前循環的剩餘部分,立刻跳到循環首部。

:如果是 for 循環,則 continue 將直接跳至 for 循環的"更新"部分(第3部分)。

:帶標籤的 continue 語句,將跳到與標籤匹配的循環首部。

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