我有一个字符串变量设置为等于userInput.nextLine(),我想检查此字符串是否包含除数值之外的任何内容。
if(string has non-numeric) {
break;
}
答案 0 :(得分:2)
尝试Catch可能是另一种替代方式。
try{
Long.parseInt(string);
执行您需要处理的数字值。
}catch(NumberFormatException ex){
}
答案 1 :(得分:0)
使用string.matches(regex)
功能。正则表达式为\\d+
,并检查输出为false
。
\d
称为Predefined Character Classes,表达式X+
:表示X
出现一次或多次,称为{{3} }。
如果您希望允许将符号(+ or -
)计算为数值的一部分,则应使用"[\\+\\-]?\\d+"
表达式,该表达式将与输入字符串"+523"
或"-563"
。有关此表达式的更多详细信息,请查看Quantifiers。
如果您希望在数字值中允许"."
,就像小数点一样,那么您应该使用正则表达式:"[\\+\\-]?(\\d+|\\d*\\.\\d+)"
,它将匹配所有类型的数字输入,例如"1254"
,"-.256"
,"+58.235"
等。
选择任何一种满足您需要的模式,然后匹配输入字符串检查,它会导致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