Java:访问Try块中的变量

时间:2015-11-15 23:25:51

标签: java exception-handling try-catch

我知道这个问题已被问过几次了,我已经尝试了回答中的建议,但是这对我的特定情况不起作用。

这是一个学校作业,仅供参考。

我正在编写一个简单的方法来检查用户是否使用try / catch块输入了数值。问题是,我的教授对未使用的变量进行评分,这是有道理的,我无法弄清楚使用userInputValue变量的任何方法。我尝试在MessageDialog中使用它,但由于它是在Try块中声明的,因此无法访问它。我尝试将它移到块外,但随后该变量未使用。有没有什么方法可以改写它但保留相同的功能而没有那个未使用的变量?

public boolean numericalUserInput(String userInput){

    try {
        double userInputValue = Double.parseDouble(userInput);
    }
    catch(NumberFormatException notANumber){
        JOptionPane.showMessageDialog(null, "You entered " + userInput + " but you should only enter numbers, please try again.");
        userEntryTextField.setText("");
        return false;
    }
    return true;
}

谢谢!

3 个答案:

答案 0 :(得分:1)

由于您不需要解析的数字,您可以简单地省略分配:

public boolean numericalUserInput(String userInput){
    try {
        Double.parseDouble(userInput);
    } catch(NumberFormatException notANumber){
        JOptionPane.showMessageDialog(null, "You entered " + userInput + " but you should only enter numbers, please try again.");
        userEntryTextField.setText("");
        return false;
    }

    return true;
}

答案 1 :(得分:1)

您似乎不需要使用userInputValue,因为您只使用此方法来检查userInput字符串是否为数字。你可以像这样离开userInputValue:

public boolean numericalUserInput(String userInput){

    try {
        Double.parseDouble(userInput);
    }
    catch(NumberFormatException notANumber){
        JOptionPane.showMessageDialog(null, "You entered " + userInput + " but you should only enter numbers, please try again.");
        userEntryTextField.setText("");
        return false;
    }
    return true;
}

答案 2 :(得分:0)

在你的方法中,你不需要一个变量来携带parse double方法的返回值

public boolean numericalUserInput(String userInput){

try {
    Double.parseDouble(userInput);
}
catch(NumberFormatException notANumber){
    JOptionPane.showMessageDialog(null, "You entered " + userInput + " but you should only enter numbers, please try again.");
    userEntryTextField.setText("");
    return false;
}
return true;
}

如果您需要返回的号码,您可以更改您的方法以使用该号码,如下所示

public double numericalUserInput(String userInput){
     double userInputValue;
try {
    userInputValue = Double.parseDouble(userInput);
}
catch(NumberFormatException notANumber){
    JOptionPane.showMessageDialog(null, "You entered " + userInput + " but you should only enter numbers, please try again.");
    userEntryTextField.setText("");
    return Double.NaN;
}
return userInputValue ;
}