0

我正在尝试获取一个使用 Scanner 方法的程序,以检查无效输入,例如数字和特殊字符(即!@ £ $ % ^),如果输入它们,只需打印出错误。我尝试使用 match() 方法修复它,但它仍然会打印出我输入的所有内容!(即使有特殊字符和数字)

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);
    }

}
4

1 回答 1

3

您应该在正则表达式的前后添加一个 .* 。就像是:

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

这个想法是你应该允许任何前面或后面的字符到你想要省略的字符。

于 2013-02-03T17:51:25.290 回答