【发布时间】:2014-07-27 16:40:13
【问题描述】:
我想使用 Scanner.next() 获取一个字符串,看看它是否包含数字。我使用正则表达式来检查字符串是否包含除数字以外的任何内容。如果字符串是硬编码的,则正则表达式可以正常工作,但从键盘获取时则不能。我希望输入 5 被检测为数字,但事实并非如此。请告诉我为什么。我的代码:
import java.util.Scanner;
public class Error {
public static void main(String[] args) {
Scanner inp = new Scanner(System.in);
int num = 0;
String input = "";
boolean isStringNumber = true;
System.out.println("\nPlease enter a number only...");
input = inp.nextLine();
isStringNumber = input.contains("[^0-9]+");
if (isStringNumber == false) {
System.out.println("\nYou entered a non number " + input);
}
}
}
【问题讨论】:
-
foo5的结果是什么?对或错。 -
有什么理由不使用Scanner.hasNextInt()?如果该行可以解释为整数值,它将返回 true。如果您尝试测试该行是否仅包含一个数字(也可能是其他文本),那么其他答案之一应该可以。
-
nextInt 用于整数, nextLine 用于字符串。没有指向你@RyanJ
-
再次阅读评论。我不是这么说的。
-
@RyanJ - 我不会使用 nextInt 因为我想检查用户是否输入了退出字符串。因此,只取字符串。
标签: java regex java.util.scanner