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 {
} |