Check illegal input .nextLine Java 
我有一个字符串变量,它被设置为等于userinput.nextline(),我想检查这个字符串是否包含除数值以外的任何内容。
1 2 3
   | if(string has non-numeric) { 
    break;     
}  | 
 
		
		
- #尝试匹配的字符串。docs.oracle.com JavaSE / 7 /文档/ / / / / Java API长& hellip;
 
- 如果这是一个最有可能的答案的形式,将iterate通过字符串和字符字符串检查它。
 
 
	  
尝试捕获可能是另一种替代方法。
1 2
   | try{
   Long. parseInt(string );  | 
 
号
do what ever youy need to do with your number value.
号
		
		
- 这是我最初的想法,我在AP CS的其他作业中使用过这些,但是我的老师说要尽量避免它们,因为它们"昂贵",这是真的吗?
 
- 不知道"贵"是什么,那就去问老师,弄清楚它的"复杂性",也试着用最坏的情况来解决你的问题。别忘了分享…
 
- 据我所知,Try-Catch方法实际上可能比大多数其他检查更快。解析器以o(n)步(即输入中每个字母一步)运行,异常以o(1)非常快的速度工作(无论输入始终是1步)。事实上,因为许多异常是由CPU而不是Java代码完成的,所以一些例外实际上可以更快,如果当时的语句(差别很小,只需要大约1/第一百万秒)。
 
- @尼克希望你得到你想要的。
 
- @谢谢你的信息。
 
 
	  
我想这个可以
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    {
    }  |