JAVA 2 Basic part 5

1.複習昨天第七章
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 );

3.Java的continue指令是對應break指令,可以馬上繼續下一次迴圈的執行
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: