使用while迴圈

「while」迴圈是程式設計中常用的迴圈型式,可以重複執行未知次數的工作。適用於動態發生與即時判斷的條件控制,程式執行時已完全不知道迴圈次數。「while」迴圈的一般用法會首先判斷括號中的條件是否滿足,若括號內的判斷結果為「true」則進入重複執行的程式碼區塊,若括號內的判斷結果為「false」則結束迴圈。「while」也可以執行如「for」迴圈所做的事,但是「while」只需要1個「初始值」來啟動,不受到「起始值、範圍值、遞增值」的限制。

public class CH0901 {

 public static void main(String[] args) {
  int i = 1;
  while (i <= 10) {
   System.out.println("第"+ i + "行");   
   i++;
   
  }

 }

}


首先定義了「int」變數「i」從1開始,「while」條件「i小於等於10」。
重複執行的程式碼區塊先印出數字,然後將變數「i」遞增1。
直到「while」條件「i小於等於10」不成立,也就是「i」已遞增到了11的情況發生時結束迴圈。

需要「即時判斷」或是「未知次數」的重複工作,應該要建立要以「while」迴圈來處理的基本概念。如即時鍵盤輸入、尋找資料等。在設計時要注意,預期是要能成功結束或是有其它條件能介入中斷的。若設計時沒注意到這種問題,會造成無限迴圈浪費JVM的資源。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CH0902 {
 
    public static void main(String args[]) throws IOException {
 
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
   
        int num=0;    
   
        while(num<10) {
         
            System.out.print("請輸入一個大於10的數字:");
         
            num=Integer.parseInt(buf.readLine());         
         
        }
        
        System.out.println("你輸入的數字是 "+num);
        
    }
    
}
首先定義了「num」變數的預設值為「0」,「while」條件「num小於10」時的重複工作。
第1次執行因參考預設值「0」條件成立使得程式碼區塊印出「請輸入...」並將「num」代入鍵盤輸入值。
直到條件不成立,也就是「num」代入的數值超過9的情況發生時,程式印出最終輸入的值並結束迴圈。
此例不考慮錯誤處理機制,先熟悉迴圈的應用是目前的主要課題。

永不停止執行

不需要「即時判斷」也不用「次數」的重複工作,以「while true」的無窮迴圈來處理。如計時、偵測裝置狀態、廣播等。在設計時要注意,預期是要能穩定執行不中斷的。若設計時沒注意到資源問題,會造成程式效能低落。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CH0904 {

 public static void main(String args[]) throws IOException, InterruptedException {

  Process p;

  String line;

  while (true) {
   p = Runtime.getRuntime().exec("wmic cpu get loadpercentage");
   p.waitFor();
   BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
   while ((line = reader.readLine()) != null) {
    System.out.print(line);
   }
   System.out.println();
  }

 }

}
「while」條件沒有指定變數,而是指定1個布林值「true」。
擺明了就是常駐程式,沒有太多的手段能由外來停止。
此例不考慮錯誤處理機制,先熟悉迴圈的應用是目前的主要課題。
綜合練習: 使用while迴圈印出九九乘法表
下一步 使用 do...while 迴圈

沒有留言:

張貼留言