验证Java:如何验证用户输入?
我是Java新手(实际上只在第三天),但在学习新的代码时,我很喜欢督促自己,我在学习MATLAB作为学位的一部分时也是这样做的。从本质上说,我喜欢比每节课所要教的内容更进一步
我目前正在编写一个基本的计算器,它可以对两个数字进行加、减、乘、除运算,并使核心元素正常工作。在这种情况下,我的“更进一步”是让程序重复,选择通过用户输入退出,并防止由于无效用户输入而导致的任何错误
我已经能够完成这个小项目的重复和退出部分,但无法防止由无效用户输入引起的错误,即由输入的字符串而不是所需的Int或Double引起的错误。我的目标是防止错误,而是请求有效的输入
从我收集的信息来看,我的问题可以通过使用Try/Catch语句来解决,但我不知道如何正确地实现这样的语句。我最好的尝试,在网上类似的ish例子之后都失败了,我认为这完全是因为我编写程序本身的方式。正如我所说,我是新手,使用了很多While循环来实现所需的行为,这可能是一种效率极低的方法
希望有人能给我指出正确的方向,
康纳
我迄今为止最好的尝试是:
int InputValue;
InputValue = 1;
while (InputValue == 1)
{
try
{
System.out.print ("Enter First Number: ");
First = Input.nextDouble ();
InputValue = 0;
}
catch (NumberFormatException e)
{
System.out.println ("Invalid Input");
System.out.println (" ");
System.out.print ("Enter First Number: ");
First = Input.nextDouble ();
}
}
但如上所述,这似乎使我的代码的其余部分看不到“First”,错误如下:
“第一个局部变量可能尚未初始化”
还尝试:
int InputValueX;
InputValueX = 1;
do
{
System.out.println (" ");
System.out.print ("Enter First Number: ");
while (!Input.hasNextDouble ())
{
System.out.println ("Invalid Input");
Input.next ();
}
First = Input.nextDouble ();
InputValueX = 0;
}
while (InputValueX == 1);
这允许代码运行,但不能解决无效输入错误
我不认为我可以使用布尔值,因为这就是循环我整个程序的原因(或者你可以使用多个布尔值吗?我试过了,但出现了错误)
http://pastebin.com/TTuCNQbx
-我的程序,刚刚超过100行
-45~85之间的感兴趣区域
# 1 楼答案
实际上,每个用户都输入
String
s。然后您必须验证String
的格式是否适合您假设您已经在
String input
中存储了用户的输入:这是将
String
解析为double
的一般构造。现在,您可以将其包装成一个循环,该循环将扫描输入,直到找到所需内容。请随意使用旗帜,例如:# 2 楼答案
这应该循环,直到输入正确的输入。 我建议添加一些系统。输出以让用户知道他的输入无效,以及支持者输入的外观
# 3 楼答案
像输入一样环绕线条。下一步*在代码中使用try/catch块。捕获RuntimeException,特别是InputMissMatchException(最佳实践),如下所示