2013-02-03 85 views
0

我試圖獲得一個程序,它使用掃描器方法來檢查無效輸入,例如數字和特殊字符(即!@£$%^),並且只要輸入了錯誤即可打印出來。我嘗試使用matches()方法修復它,但它仍然打印出我輸入的所有內容! (即使有特殊字符和數字)在Java(Scanner)中驗證用戶輸入?

private static void input(String s) 
{ 
    Scanner userInput = new Scanner(System.in); 
    String words; 
    System.out.println("Enter your words: "); 
    words = userInput.nextLine(); 

if (words.matches("[^a-zA-Z0-9 ]")) 
{ 
    System.out.println("Error, no number input or special character input please: "); 
} 

else 
    { 
     System.out.println(words); 
    } 

} 

回答

3

您應該在正則表達式的前面和後面添加一個*。例如:

if (words.matches(".*[^a-zA-Z0-9 ].*")) 

這個想法是,你應該允許任何前面或後面的字符,你想省略。

+1

並將一個'!'添加到布爾子句中(僅在不需要符號時才輸出錯誤消息)。 –

+0

@AndrewLogvinov再次看到他的代碼。 –

+0

我明白了!謝謝。 – Adz