Java 程式設計(一)  第 五章 重複性流程  上一頁    下一頁

 

5-3 while 迴圈敘述

內容

  • 5-3-1 while 敘述的流程

  • 5-3-2 範例研討:累加/累乘程式

  • 5-3-3 範例研討:製作電子算盤

  • 5-3-4 自我挑戰:超商收銀機

5-3-1 while 敘述的流程

5 -4  while 敘述的運作流程圖,首先判斷條件是否成立,成立(yes)則執行 while 迴圈實體,否則(no)不執行 while 迴圈,並離開此 while 敘述;當條件成立並執行迴圈實體之後,再測試條件是否成立,如成立則繼續執行迴圈,否則跳離迴圈。

5-4 While 敘述的流程圖

由圖 5-4 可以看出,while 敘述比 for 迴圈簡單了許多,並不設定條件初值,也不計算條件變數的增減量,而僅判斷條件是否成立,來決定是否重複執行迴圈敘述區塊。While 敘述的語法與範例如下:

語法:

範例:

while (條件判斷) {

statement 1;

statement 2;

….

}

k=1;

while(k <= value) {

     sum = sum + k;

     pro = pro * k;

     k =  k +1;

}

5-3-2 範例研討:累加/累乘程式

A)程式功能:Ex5_3.java

製作一個具有累加與累乘功能的計算器,系統要求輸入一個整數 n,再分別計算 1 累加到 nsum = 1 +2 + 3 + … +n)與 1 累乘到 npro = 1 * 2 * 3 * … * n),並輸出兩則計算結果。期望操作介面如下:

請輸入一個整數 =>20

1+2+3+4+...+20 = 210

1*2*3*... *20 = 2432902008176640000

B)製作技巧研討:

無論採用何種迴圈敘述句,連續累加或累乘程式大致上與圖 5-3 一樣。吾人修改圖 5-3,使其符合 while 迴圈敘述並加入累乘功能,如圖 5-5 所示(陰暗部分)。進入迴圈之前,將計數器設定為 1count = 1),進入 while 敘述句立即判斷 count 是否小於或等於 10count <=10),如是則執行累加與累乘的敘述句,計數器也累加 1count++),之後再回來測試條件是否成立。條件成立(count <=10)則再執行 while 程式區塊,否則離開 while 敘述句。

5-5 while 敘述製作累加/累乘程式

C)程式範例:

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

//Ex5_3.java

 

import java.util.*;

public class Ex5_3 {

     public static void main(String args[]) {

          Scanner keyin = new Scanner(System.in);

          long sum=0, pro=1, value, k;

          System.out.printf("請輸入一個整數 =>");

          value = keyin.nextInt();

          k=1;

          while(k <= value) {

             sum = sum + k;

             pro = pro * k;

             k =  k +1;

          }

          System.out.printf("1+2+3+4+...+%d = %d\n", value, sum);

          System.out.printf("1*2*3*... *%d = %d\n", value, pro);

     }

}

D)程式重點說明:

  • 7 long sum=0, pro=1;。分別設定累加與累乘之累積器的初始值。

  • 10 k=1;。初始值設定,使用於 while 敘述的條件判斷式。

  • 11~15 while (k <=value) { …..}While 敘述句,判斷 k <= value 條件成立的話,則執行迴圈內敘述區塊;否則結束 while 敘述。

  • 14 k = k+1;。條件值增量,如果沒有此敘述,while 迴圈將永遠做不完。

5-3-3 範例研討:製作電子算盤

A)程式功能:Ex5_4.java

早期傳統『柑仔店』大多利用算盤計算『人客』購買商品的總額。它的計算方法是一筆接一筆輸入購買金額,也一筆一筆累計總額,輸入結束後立即得到購買金額多寡。請編寫製作一套模擬算盤程式,吾人可連續輸入購買金額,也能隨時累計總額;再利用輸入價格為『零』,表示結束輸入,並顯示總計金額。期望操作介面如下:

歡迎光臨 == 春嬌柑仔店 ==

 

已購買 0 請輸入產品價格 (0 結束) =>50

已購買 50 請輸入產品價格 (0 結束) =>76

已購買 126 請輸入產品價格 (0 結束) =>230

已購買 356 請輸入產品價格 (0 結束) =>0

人客您總共買 356 謝謝!! 愛過來ㄜ

B)製作技巧研討:

如果沒有設定一個關鍵條件,算盤好像會無止境的一直累加不停;本範例利用價格為 0 作為停止計算的關鍵因素,此類型系統利用 while 敘述句,最恰當不過了。吾人將系統重點部份以虛擬碼規劃如下:

導入輸入套件;

宣告相關變數,並設定適當初值;

顯示目前購買小計(total),並要求輸入下一個產品價格;

讀入產品價格(cost);

while (cost > 0 ) {

累計購買小計(total = total + cost);

顯示目前購買小計(total),並要求輸入下一個產品價格;

讀入產品價格(cost);

}

顯示客戶總購買金額;

C)程式範例:

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

//Ex5_4.java

 

import java.util.*;

public class Ex5_4 {

   public static void main(String args[]) {

      Scanner keyin = new Scanner(System.in);

      int total=0, cost;

      System.out.printf("歡迎光臨 == 春嬌柑仔店 ==\n\n");

      System.out.printf("已購買 %d 請輸入產品價格 (0 結束) =>", total);

      cost = keyin.nextInt();

      while (cost > 0) {

          total = total + cost;

          System.out.printf("已購買 %d 請輸入產品價格 (0 結束) =>", total);

          cost = keyin.nextInt();

      }

      System.out.printf("人客您總共買 %d 謝謝!! 愛過來ㄜ\n", total);

   }

}

5-3-4 自我挑戰:超商收銀機

A 程式功能:PM5_2.java

利用算盤結算總額最大缺點是,客戶購買相同產品時,也是需要一個接一個輸入價格。目前超商收銀機大多允許輸入單價及數量,它會自動計算並累加總額。請您幫超商建立一套收銀機系統,系統會連續要求輸入貨品單價與數量,以及顯示目前小計多寡,如果輸入貨品單價為 0 時,表示結束輸入,之後顯示購買總金額。期望操作介面如下:

*** 歡迎光臨  春嬌超商 ***

累計 0.0 請輸入貨品單價 (0 結束) =>56

        請輸入購買數量 =>2

累計 112.0 請輸入貨品單價 (0 結束) =>67

        請輸入購買數量 =>4

累計 380.0 請輸入貨品單價 (0 結束) =>238

        請輸入購買數量 =>2

累計 856.0 請輸入貨品單價 (0 結束) =>0

總計 => 856.0

 

B)製作技巧提示:

吾人稍微修改 Ex5_4 範例,即可滿足系統要求,虛擬碼重點提示如下:

設定購買總額初值(total =0

顯示目前購買小計(total),並要求輸入下一個產品價格;

讀入產品價格(cost);

while (cost > 0 ) {

顯示輸入購買數量,並讀取(number;

累計購買小計(total = total + cost*number);

顯示目前購買小計(total),並要求輸入下一個產品價格;

讀入產品價格(cost);

}

顯示客戶總購買金額;

翻轉工作室:粘添壽

 

Java 程式設計(一) 含程式邏輯

 

 

翻轉電子書系列: