2013-10-20 30 views

回答

4

使用正則表達式來檢查輸入和循環得到一個很好的答案:輸入

String name = ""; 
while (true) { 
    System.out.println("Enter Name"); 
    name = Keyboard.readString(); 
    if (name.matches("[a-zA-Z]+")) 
     break; 
    System.out.println("Invalid input. Enter letters only"); 
} 
+0

'匹配'是否需要整個字符串匹配?如果不是,你需要將它錨定('^'和'$') – Kevin

+0

@Kevin是的。 ^和$與java的匹配()隱含,不像JavaScript,perl,ruby等 – Bohemian

+0

感謝您的幫助..正是我想要的:) –

0
boolean numberOrNot = name.matches(".*\\d.*"); 

numberOrNottrue,如果它的名字有任何數量的,否則這將是false

正則表達式。 -?\\d+是一個正則表達式。

  • -?:負號,可以有或沒有一個
  • \\d+:一個或多個數字

但是,這是驗證,我不認爲你可以把限制在控制檯上。

+0

okey,非常感謝您的幫助@batty –

+0

您認爲我應該怎麼做呢@Pshemo –

+0

是啊..糾正了這一點。 :) – Batty

0

你不能讓用戶在控制檯中只輸入字符,在輸入時只能輸入其他字符,但是你可以驗證他的輸入並檢查它是否只包含字母字符,如果輸入無效,請求用戶再次鍵入他的數據。

要檢查是否字符串只包含字母字符,你可以遍歷所有的人物和他們使用Character.isAlphabetic(character)或者只是使用matches用正則表達式像這樣的userData.matches("\\p{IsAlphabetic}+");

Character.isAlphabetic\\p{IsAlphabetic}擁有檢查a-zA-Z範圍的優勢,因爲它會也接受非英文字符,如ą,ę

+0

因爲我是初學者,所以對我使用az範圍..但非常感謝您的幫助 –

+0

@KurtCamilleri歡迎您:) – Pshemo

相關問題