我正在尝试捕获一个InputMismatchException,Scanner期望一个double,如果输入等于“c”或“q”,我想在catch块中运行一些特定的代码。我想知道是否有一种方法可以在抛出异常后获取用户输入的值。因此,例如,如果代码调用double并且用户输入字母“c”,我希望能够知道特定的“c”被输入,并且如果为真则执行某些操作。这是我正在尝试编写的代码,其中“getValue()”是一个用于描述我想要完成的内容的虚构方法名称:
double value = 0.0;
try{
System.out.print("\nEnter a number: ");
value = input.nextDouble();
}
catch(InputMismatchException notADouble){
if(notADouble.getValue().equalsIgnoreCase("c")){
//run the specific code for "c"
}
else if(notADouble.getValue().equalsIgnoreCase("q")){
//run the specific code for "q"
}
else{
System.out.print("\nInvalid Input");
}
}
提前感谢您的意见:)
答案 0 :(得分:2)
在扫描程序尝试将输入转换为数字之前,使用Scanner.hasNextDouble()
验证输入。这样的事情应该有效:
double value = 0.0;
Scanner input = new Scanner(System.in);
System.out.print("\nEnter a number: ");
while(input.hasNext())
{
while(input.hasNextDouble())
{
value = input.nextDouble();
}
String next = input.next();
if("c".equals(next))
{
//do something
}
else if("q".equals(next))
{
//do something
}
else
{
System.out.print("\nInvalid Input");
//return or throw exception
}
}
答案 1 :(得分:-1)
您应该在输入中读取字符串,然后进行转换。