Java流程控制-1:
---------------------------------------------
--------------------------------------------
本節會介紹Java程式中的流程控制程式,基本認識架構,我們可以自己決定執行程式的順序,先執行A在執行B之類等等。以下程式碼只呈現部分程式。
本節關鍵字有:if-else、switch-case;for;
(一)if-else流程控制:此流程架構的關鍵英文字為「if( )、else、else if( )」,括號內會有一個判斷值(條件),如果為正確,就會執行if的區域內程式碼,若沒有則會執行else區域內的程式碼,程式可以有多個else。這流程會判斷該在哪個區域執行程式碼。以下架構有三個判斷:(程式設計師可依照需求自己創造if-else)
if(判斷條件)
{
//if1 內的區域程式碼
if(判斷條件)
{
//if2內的區域程式碼
}
}else if(判斷條件){
//elseif3 內的區域程式碼
}else {
//else 內的區域程式碼
}
1. 若「if( )、else if( )」括號中判斷條件成立的話,會傳回布林值true並執行if內的程式區塊,反之則傳回false,程式碼忽略if區域程式碼,流程往下執行,尋找有無else的程式區域。
int money = 0;
if( money = 0 ) {
//程式碼
}
//上述程式碼不合法,因為”money=0”並不會回傳布林值。
//(除非條件設定為money ==0)
boolean Iamhandsome = true;
if(Iamhandsome = false) {
//程式碼
}
//合法,該判斷式會判斷為false,不執行if的區域程式碼;
2. 精簡式流程:if架構沒有「{ }」,下面創立一個int型態的變數mymoney,假設為我的錢,會執行if內的程式碼。
int mymoney = 1,000,000;
if(mymoney > 0)
System.out.print(“你有錢。”); //只能有一列程式碼
else
System.out.print(“你沒有錢。”); //下方可再多程式碼,但不屬於if-else了
3. 階層式流程控制:就是多種判斷條件的結合架構。
if()
else if()
else if()
else
(二)switch-case選擇流程敘述:此架構關鍵英文字為「switch( )、case、default、break」,與if-else一樣也有括號判斷條件式,但判斷條件式的值必須是char、byte、short、int…等基本資料型別,不可為參考型別(Array、String…等)。
1. 我們會發現若有多個條件式,使用elseif 很費時,浪費很多執行時間,這時可以利用switch-case。
(1) default若都沒有符合的值,就會執行此區域程式,但不一定要存在。
(2) break跳出程式,可以不用存在,但正常狀況下流程判斷完需要跳出程式。
(3) 所以一般此流程架構為switch+case,這兩個關鍵英文字結合,會接續判斷case的值。
(4) 以下為一範例:(程式碼會顯示為:這才是唷!!)
char test = ‘A’;
switch(test) {
case 1:
System.out.println(“是這個嗎?”);
break;
case ‘A’: //若改為case ‘B’,程式碼會執行default。
System.out.println(“這才是唷!!”);
break;
default :
System.out.println(“都沒有符合的耶!!”);
break; }
2. switch(expression) 中只能存放一個參數(argument)。
3. default關鍵字可單獨存在,若有也只能有一個。
4. case的比對值不可重複出現,每個case的比對值必須唯一。
(三)for-loop迴圈敘述:for-loop、while-loop、do-while與for-each皆屬於重複性控制迴圈(iteration loop),意思就是程式區域內會一直被執行,直到負責控制迴圈運算的條件不滿足為止。
1. 一般流程,for分三個部分:
for(initialization ; Boolean-expression ; stepping) { 程式執行區塊 }
上述三部分並非一定要撰寫,可空白。
2. for-loop nested流程:巢狀for-loop表示一個for內還有包含for迴圈,以下為顯示九九乘法表的程式碼。
for(int i=1; i<10; i++){for(int j=1; j<10; j++){System.out.print(i + "*" + j + "=" + i * j + "\t");}System.out.println();
}
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
3. break與continue關鍵字:for-loop結構中可以使用break跳出迴圈,它的相反就是使用continue立即執行下一個敘述。善用break與continue可在結構中更有彈性。continue表示為以下程式碼忽略不執行。
(1) 第一個範例沒有使用continue,會顯示「1 2 3 4 5 6 7」:
for(int i=1; i<11; i++){
if(i==8){
break;
}
if(i%3==0){
//continue;
}
System.out.print(i+"\t");
}
(2) 此範例使用continue,會顯示「1 2 4 5 7」:
for(int i=1; i<11; i++){
if(i==8){
break;
}
if(i%3==0){
continue; //流程跑回for,不執行下面程式碼,符合的有3跟6所
//以不會顯示3跟6
}
System.out.print(i+"\t");
}
留言
張貼留言