「異常控制循環」可能意味着循環,同時捕獲異常,在達到正確輸入時退出。儘管這個詞似乎已經被那個「學習指南」所喚起了。
Bobby的答案是幾乎沒有,只是缺少2件重要的事情在catch塊,以防止它進入無限循環:
import java.util.InputMismatchException;
import java.util.Scanner;
public class LoopWhileException {
public static void main(String[] args) {
boolean isNumber = false;
int number = 0;
Scanner scan = new Scanner(System.in);
while(!isNumber) {
try {
System.out.print("Enter an integer: ");
number = scan.nextInt();
System.out.print("Your integer is: " + number);
scan.close(); // close resources for good practice
// not true = false, exits loop on integer input
isNumber = true; // break; can also be used
} catch(InputMismatchException ime) {
System.out.print("Input is not a number!\n\n");
scan.nextLine(); // clears input buffer
// not false = true, re-enters while loop on catch
isNumber = false;
}
}
}
}
如前所述,這樣的循環異常一般是不會接受的做法,但這只是所謂的「例外控制」情景的參考。
這個問題本身的氣味,我喜歡它有一個就可以再用大牌子:'不要做' – Bobby 2011-12-16 13:06:14
難道說,導向裝置沿着這些路線的東西:`而(true){if(1和5之間的輸入){throw Exception();}}`? – Bobby 2011-12-16 13:07:34
作爲一個有趣的筆記,[你不是第一個覺得這件事(http://answers.yahoo.com/question/index?qid=20110513111627AAkoPV6)。 – Bobby 2011-12-16 13:09:42