2010-02-25 94 views
4

在Java中好吧,我想以24小時格式詢問用戶一段時間。我已經設法利用DateFormatSimpleDateFormat來告訴它什麼格式的時間被輸入,然後相應地解釋,拋出一個異常,如果它不遵循這種格式。這裏是我有:只接受有效時間

DateFormat fmt = new SimpleDateFormat("HH:mm"); 
Scanner keyboard = new Scanner(System.in); 

try { 
    String input = keyboard.nextLine(); 
    Date theDate = fmt.parse(input); 
    System.out.println(theDate.toString()); 
} catch (ParseException e) { 
    System.out.println("Incorrect format!"); 
    e.printStackTrace(); 
} 

如果我鍵入一個單詞,它確實會引發異常。但是,如果我輸入類似234234:2342342的東西,它實際上會計算出數小時和分鐘等同的天數,然後輸出實際日期。例如,給定輸入:

input: 23423423:232323 
output: Fri Jul 29 07:03:00 PDT 4642 

我想知道是否有辦法將此視爲異常。所以我只想接受格式化程序指定的內容(H 0-23和m 0-59),如果它不在這些邊界內,拋出異常或有某種方式知道。我想知道的是,如果在我正在使用的格式化程序類中有一種方法可以執行此操作,或者應該使用Scanner類(如何執行)來完成此操作,或者如果我必須自己編寫解析和驗證代碼。我接近完全錯誤嗎?我現在只是嘗試可能性,所以如果有更好的方法,請讓我知道。

謝謝!

回答

7

我想通了,用DateFormatsetLenient的方法。

fmt.setLenient(false); 

現在,在任何不格式適合打字(小時= 0〜23,分鐘= 0至59),它拋出一個異常:)

+2

我認爲你要得到一個自我 - 學習者徽章:) – Dolph 2010-02-25 01:38:59