2013-02-03 53 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