我想讀取輸入字符串 - 如果它符合預定義的模式,它應該返回。如果輸入不正確,應拋出異常。使用掃描儀和模式總是拋出異常
這是我到目前爲止。我的問題是,無論輸入它總是拋出一個異常。我在這裏做錯了什麼?
public String readPostCode() throws InputMismatchException
{
Scanner in = new Scanner(System.in);
String postcode;
System.out.println("Please enter a Postcode");
postcode = in.next(this.pattern);
return postcode;
}
當我用上面的方法在try/catch語句,InputMismatchException時總是陷於。
編輯:下面是模式的定義:
public Pattern pattern = Pattern.compile( "[a-zA-Z]" +
"([0-9]|[a-zA-Z])" +
"(|[0-9]|[0-9][0-9]|[a-zA-Z]|[0-9][a-zA-Z])" +
" [0-9][a-zA-Z][a-zA-Z]");
哪一行引發異常,什麼是'this.pattern'? – RobEarl
您是否將this.pattern指定爲相應的正則表達式? (例如[A-Z0-9] {3} +?)如果正則表達式未定義,則可能引發InputMismatchException。從它的外觀來看,您在輸入郵編時試圖檢查句法的有效性。嘗試輸入郵政編碼,然後檢查事實後的句法有效性。 如果正則表達式不匹配,則丟棄輸入。 否則,保留它。 – 2012-11-17 19:56:08
@RobEarl可以拋出'InputMismatchException'的唯一行是'postcode = ...'。 –