检查非法输入.nextLine Java

Check illegal input .nextLine Java

本问题已经有最佳答案,请猛点这里访问。

我有一个字符串变量,它被设置为等于userinput.nextline(),我想检查这个字符串是否包含除数值以外的任何内容。

1
2
3
if(string has non-numeric) {
    break;    
}


尝试捕获可能是另一种替代方法。

1
2
try{
   Long.parseInt(string);

do what ever youy need to do with your number value.

1
2
3
}catch(NumberFormatException ex){

}


我想这个可以

1
2
String str1 ="123456";
        System.out.println(str1.matches("[^0-9]+"));

输出为false

如果你这样做的话

1
System.out.println(str1.matches("[0-9]+"));

输出为true


如果要显示,请将string.matches()与正则表达式一起使用。或者可以使用string.charat()逐字符迭代它。


使用string.matches(regex)功能。正则表达式将是\\d+,并检查输出为false的位置。

  • \d被称为预定义的字符类,表达式X+表示X出现一次或多次,称为量词。

  • 如果希望将符号(+ or -算作数值的一部分,则应使用与输入字符串"+523""-563"匹配的"[\\+\\-]?\\d+"表达式。有关此表达式的详细信息,请查看模式类文档。

  • 如果您希望在小数点的情况下允许使用".",那么您应该使用正则表达式:"[\\+\\-]?(\\d+|\\d*\\.\\d+)",它将与所有类型的数字输入相匹配,如"1254""-.256""+58.235"等。

  • 选择满足您需要的模式中的任何一个,然后与输入字符串进行匹配,检查是否会导致false:这意味着不是有效的数字输入。

    1
    2
    3
    4
    5
    String pattern ="[\\+\\-]?(\\d+|\\d*\\.\\d+)" ; // or only \\d+
                                                    //or [\\+\\-]?\\d+
        if(!string.matches(pattern)) // not a valid numeric input    {

        }