如果从字符串解析双精度(由用户给出)时抛出NumberFormatException
,我该如何重试?
String input = JOptionPane.showInputDialog(null, message + count);
double inputInteger = Double.parseDouble(input);
答案 0 :(得分:0)
inputInteger = null;
while(inputInteger == null)
{
input = JOptionPane.showInputDialog(null, message + count);
try
{
if (isValidGrade(input, maxPoints))
inputInteger = Double.parseDouble(input);
}
catch(NumberFormatException e)
{
// Show your error here
inputInteger = null;
}
}
答案 1 :(得分:0)
您需要将代码包装在try catch中并处理异常以执行任何操作。做这样的事:
try {
inputInteger = Double.parseDouble(input);
}catch(NumberFormatException nfe) {
// Go to take input again
}
答案 2 :(得分:0)
您可以通过在catch块中递归调用该方法来完成此操作。举个例子:
public void yourMethod() {
try {
input = JOptionPane.showInputDialog(null, message + count);
if (isValidGrade(input, maxPoints)){
inputInteger = Double.parseDouble(input);
} catch (NumberFormatException e) {
this.yourMethod();
}
}
这不是一个有效的代码,但在代码中使用了这个概念。使用while循环也是另一种选择。但我喜欢这种方法而不是while循环,因为这会减少内存开销。
答案 3 :(得分:0)
在这种情况下,你可以使用do-while
循环来重复这些事情,并在满足所有条件时使布尔变量为false。
以下是一个例子:
boolean isFailure=true;
do{
try{
input = JOptionPane.showInputDialog(null, message + count);
// do whatever you want....here...
isFailure=false;
}catch(NumerFormatException e){
//log the exception and report the error
JOptionPane.showMessageDialog(null,"Invalid Input! Try again!", "Error",
JOptionPane.ERROR_MESSAGE);
}
}while(isFailure);