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」。
擺明了就是常駐程式,沒有太多的手段能由外來停止。
此例不考慮錯誤處理機制,先熟悉迴圈的應用是目前的主要課題。






沒有留言:
張貼留言