a.迴圈控制結構
1.for迴圈敘述
說明:
1.Java的for迴圈是一種簡化的while迴圈,可以執行固定次數的程式區塊
2.迴圈會自行處理計數器,讓計數器每一次增加或減少一個固定值
3.直到迴圈的結束條件成立為止
2.前測式的while迴圈敘述
說明:
1.例如:使用whilwhile迴圈敘述不同於for迴圈,我們需要在程式區塊自己處理計數器的增減
2.while迴圈是在程式區塊的開頭檢查結束條件,條件為true才允許進入迴圈執行
3.e迴圈計算階層5!的值,如下所示:
while ( level <= 5 ) {
n *= level;
System.out.println(level + "!=" + n);
level++;
}
3.後測式的do/while迴圈敘述
說明:
1.do/while和while迴圈敘述的差異是在迴圈結尾檢查結束條件
2.因此,do/while迴圈的程式區塊至少會執行一次。
3.例如:使用do/while迴圈顯示攝氏轉華氏的溫度轉換表,如下所示:
do {
f = (9.0 * c) / 5.0 + 32.0;
System.out.println(c + "\t" + f);
c += step;
} while ( c <= upper );
4.break和continue指令敘述
說明:
1.Java的break指令可以強迫終止迴圈執行
2.如同switch條件敘述使用break指令敘述跳出程式區塊一般,如下所示:
do {
System.out.print("|" + i);
total += i;
i++;
if ( i > 15 ) break;
} while ( true );
4.不過,它並不會執行程式區塊位在continue指令敘述後的程式碼
5.如果使用在for迴圈,一樣更新計數器變數,如下所示:
for ( total = 0, i = 1; i <= 10; i++ ) {
if ( (i % 2) == 1 ) continue;
System.out.print("|" + i);
total += i;
2.類別方法
練習一
做一個可以求平均的類別方法:
程式碼
//利用陣列+類別方法,求平均值
public class E724 {
public static void main(String[] args) {
int [] num = {120,99,-5,168,333,280};
double d = getAvg(num);
System.out.println("平均="+d);
}
//此 getAvg(int[]) 可稱為一個API,使用範例如下:
public static double getAvg (int [] num) {
int sum =0;
for (int i=0; i<num.length; i++){
sum = sum + num[i];
}
double avg = (double) sum / num.length;
return avg;
}
}
練習二
點餐系統 用類別方法 將餐點獨立,再加上 for迴圈,並設定輸入999為結束。
程式碼
import java.io.*;
import java.util.Scanner;
class Sample61
{
static String [] menu = {"牛","羊","雞","豬","魚"};
//點餐主程式
public static void main(String[] args) throws IOException
{
int i=0;
for (; i!=999 ;){ //無窮迴圈,才可以持續點餐,輸入999表示離開
String msg1 = "請輸入數字 1~5,代表您要幾號餐。";
System.out.println(msg1);
Scanner scan = new Scanner(System.in);
i = scan.nextInt();
System.out.println( getMenu(i)); //呼叫getMenu副程式
}
System.out.println("Bye~"); //在迴圈外面,離開迴圈後只跑一次
}
//getMenu 副程式,可重複使用
public static String getMenu(int num){
String result="";
if (num==999) //若無此行,輸入999則會顯示"無此餐"後離開。利用此行傳回""。
result = "";
else if(num <1 || num >5) //排除 1~5 以外的錯誤輸入
result = "無此餐";
else
result = "你點的是"+menu[num-1];
return result;
}
}
結果
No comments:
Post a Comment