使用標志位控制循環
前面提到了控制循環的常用技術:計數器控制的循環.另一種控制循環的常用技術是在讀取和處理一個集合的值時指派一個特殊值.這個特殊的輸入值也成為標志值(sentinel value),用以表明循環的結束.如果一個循環使用標志值來控制它的執行,他就稱為標志位控制的循環(sentinel-controlled loop).
在循環控制中,不要使用浮點值來比較值是否相等.因為浮點值都是某些值的近似值,使用它們可能導致不精確的循環次數和不准確的結果.
輸入和輸出重定向
輸入重定向指從文件讀取輸入,而不是從鍵盤.
輸出重定向指將輸出發送給文件,而不是屏幕.
SentineValue類代碼在文末,在F:\workspace\Welcome\bin目錄下新建input.txt文件,內容如下:
package welcome; import java.util.Scanner; /* * 用來讀取和計算個數不確定的整數之和,輸入0則表示輸入結束 */ public class SentinelValue { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("輸入一個整數,若輸入0將退出: "); int data = in.nextInt(); int sum = 0; while (data != 0) { sum = sum + data; System.out.print("輸入一個整數,若輸入0將退出:"); data = in.nextInt(); } System.out.println("The sum is " + sum); } }