检查非法输入.nextLine Java

时间:2013-11-16 05:30:53

标签: java input error-handling

我有一个字符串变量设置为等于userInput.nextLine(),我想检查此字符串是否包含除数值之外的任何内容。

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

4 个答案:

答案 0 :(得分:2)

尝试Catch可能是另一种替代方式。

try{
   Long.parseInt(string);
  

执行您需要处理的数字值。

}catch(NumberFormatException ex){

}

答案 1 :(得分:0)

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

  1. \d称为Predefined Character Classes,表达式X+:表示X出现一次或多次,称为{{3} }。

  2. 如果您希望允许将符号(+ or -)计算为数值的一部分,则应使用"[\\+\\-]?\\d+"表达式,该表达式将与输入字符串"+523""-563"。有关此表达式的更多详细信息,请查看Quantifiers

  3. 如果您希望在数字值中允许".",就像小数点一样,那么您应该使用正则表达式:"[\\+\\-]?(\\d+|\\d*\\.\\d+)",它将匹配所有类型的数字输入,例如"1254""-.256""+58.235"等。

  4. 选择任何一种满足您需要的模式,然后匹配输入字符串检查,它会导致false:这意味着它不是有效的数字输入。

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

答案 2 :(得分:0)

如果要显示,请使用带正则表达式的String.matches()。或者你可以使用String.charAt()来迭代它,char by char。

答案 3 :(得分:0)

我认为这样做

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

输出将为false

如果你这样做

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

输出将为true