Java 如何防止用户在需要数字时输入空白或只按enter键?
我尝试只接受用户的数字。如果他们输入一个字母,该代码会给他们一条错误消息。但是如果他们点击回车键或者只是空白,这就不起作用了。我尝试将一个名为test的字符串初始化为null,然后设置scnr.nextLine()=test,然后检查test是否为空,但我不知道在这样做时如何保持程序的其余部分正常运行。扫描仪对我来说很棘手。请帮忙Java 如何防止用户在需要数字时输入空白或只按enter键?,java,Java,我尝试只接受用户的数字。如果他们输入一个字母,该代码会给他们一条错误消息。但是如果他们点击回车键或者只是空白,这就不起作用了。我尝试将一个名为test的字符串初始化为null,然后设置scnr.nextLine()=test,然后检查test是否为空,但我不知道在这样做时如何保持程序的其余部分正常运行。扫描仪对我来说很棘手。请帮忙 double mainNumber = 0; System.out.print("Enter a number: ");
double mainNumber = 0;
System.out.print("Enter a number: ");
if (scnr.hasNextDouble() ){
mainNumber = scnr.nextDouble();
System.out.println(mainNumber);
scnr.nextLine();
}
else {
System.out.println("Sorry, please enter a number.\n");
scnr.nextLine();
}
您可以使用以下代码段读取一个
double
值:
Scanner scanner = new Scanner(System.in);
try {
double number = Double.parseDouble(scanner.nextLine());
} catch (NumberFormatException e) {
e.printStackTrace();
}
我猜你的代码是在while循环还是什么?所以它会一直询问,直到用户输入正确的值 然后(为了方便起见)应该使用
String str=scnr.nextString()
而不是nextDouble()
,并分析它返回的字符串
您可以使用str.trim()
删除空格(然后使用str.isEmpty()
检查字符串是否为空),并检查它是否是一个可以使用regexp(以及您可以找到的任何regex教程)的数字,或者只使用此regex:str.matches(\\d+”)
(如果str是一个数字,则返回true,但此处没有逗号)
当然,不要忘记将字符串转换为double后的:
double.parseDouble(str.replace(“,”,”)代码>。我希望“替换”部分是显而易见的;) 在用户输入有效数字之前,您必须根据需要使用while循环输入
此代码
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
double mainNumber = 0;
boolean isValidNumber = false;
System.out.print("Enter a number: ");
while (isValidNumber == false) {
String line = scnr.nextLine();
try {
mainNumber = Double.valueOf(line);
isValidNumber = true;
} catch (NumberFormatException e){
System.out.print("Sorry, please enter a number.\n");
}
}
System.out.println("Main number is: " + mainNumber);
}
具有此示例输出:
Enter a number: sdfgsgxb
Sorry, please enter a number.
xcvbxcvb
Sorry, please enter a number.
gsfdfgsdf
Sorry, please enter a number.
aearg
Sorry, please enter a number.
15.77
Main number is: 15.77
这个程序的目的是,我将获取存储在mainNumber中的值,并用它进行计算,然后就结束了。。。有整数、小数、十六进制/八进制/指数/。。格式化的数字、负数、复数、无理数等。我在中的Console#echo(布尔值)
参考中发现,该(私有)方法关闭用户输入echo。有了它,您可以为控制台编写自己的输入掩码。检查标题:“如何防止用户输入空格[…]”@BinkanSalaryman,我们得到了java.lang.NumberFormatException:empty String
如果用户只输入空格,您的答案没有错。但从被接受的答案中,我可以看出这个问题表达得很糟糕……做得好,这就是我准备提交的答案。或者,您可以在相同条件下使用do-while
循环,尽管这会阻止简单打印“错误”消息。