java - 当输入字符串而不是整数时创建 Java 异常

标签 java swing exception netbeans

我必须在学校创建一个计算器应用程序并且计算器工作正常,但现在我必须创建一个异常,当用户输入字符串而不是整数值时显示用户友好消息。

这是我现在拥有的带有 JFrame 和所有内容的代码:

private void minActionPerformed(java.awt.event.ActionEvent evt) {

    String invoerEen = getalEen.getText();
    int invoerEenDef =  Integer.parseInt(invoerEen);
    String invoerTwee = getalTwee.getText();
    int invoerTweeDef = Integer.parseInt(invoerTwee);

    int resultaatDef = invoerEenDef - invoerTweeDef;
    resultaat.setText(Integer.toString(resultaatDef));
}

private void plusActionPerformed(java.awt.event.ActionEvent evt) {
    String invoerEen = getalEen.getText();
    int invoerEenDef =  Integer.parseInt(invoerEen);
    String invoerTwee = getalTwee.getText();
    int invoerTweeDef = Integer.parseInt(invoerTwee);

    int resultaatDef = invoerEenDef + invoerTweeDef;
    resultaat.setText(Integer.toString(resultaatDef));
}

private void keerActionPerformed(java.awt.event.ActionEvent evt) {
    String invoerEen = getalEen.getText();
    int invoerEenDef =  Integer.parseInt(invoerEen);
    String invoerTwee = getalTwee.getText();
    int invoerTweeDef = Integer.parseInt(invoerTwee);

    int resultaatDef = invoerEenDef * invoerTweeDef;
    resultaat.setText(Integer.toString(resultaatDef));
}

private void delenActionPerformed(java.awt.event.ActionEvent evt) {
    String invoerEen = getalEen.getText();
    int invoerEenDef =  Integer.parseInt(invoerEen);
    String invoerTwee = getalTwee.getText();
    int invoerTweeDef = Integer.parseInt(invoerTwee);

    int resultaatDef = invoerEenDef / invoerTweeDef;
    resultaat.setText(Integer.toString(resultaatDef));
}

此代码包含所有事件及其执行的操作(第一个用于减法等...)。我使用 Netbeans 作为我的开发环境,我试过像这样添加 try 和 catch 语句:

try {
        String invoerEen = getalEen.getText();
        int invoerEenDef =  Integer.parseInt(invoerEen);
        String invoerTwee = getalTwee.getText();
        int invoerTweeDef = Integer.parseInt(invoerTwee);

        int resultaatDef = invoerEenDef - invoerTweeDef;
        resultaat.setText(Integer.toString(resultaatDef));
    }
catch(/* what do I put here? */) {
        // what do I do here?
}

所以我的问题是,当用户输入的值不是正确的返回类型(必需:整数,找到:字符串)时,我该如何创建异常。

double 或其他返回类型目前并不重要,只有字符串。

提前致谢!

最佳答案

要在输入字符串时进行捕捉(空白文本也算在内),请使用 NumberFormatException :

catch (NumberFormatException n) {
     System.out.println("Please enter a number.");
}

要捕捉任何错误,使用Exception :

catch (Exception e) {
     System.out.println("Error.");
}

您可以将它们结合起来以捕获不同的错误,以便您可以分别处理它们。例如:

try 
{
    String s = "hi";
    int i = Integer.parseInt(s); // will go into NumberFormatException n
    s = s.substring(-2); // will go into Exception e
}
catch (NumberFormatException n) {
    System.out.println("Please enter a number.");
}
catch (Exception e) {
    System.out.println("Unspecified error (not a NumberFormatException).");
}

关于java - 当输入字符串而不是整数时创建 Java 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20411196/

相关文章:

java - 将对象转换为特定数字类型的优雅方法

java - Flink : Error executing pipeline java. util.concurrent.TimeoutException:Futures 在 [10000 毫秒] 后超时

c# - 奇怪的 try/catch block 行为

c# - 我自己的异常处理程序仍然抛出异常并使应用程序崩溃

java - "Variable might not have been initialized"错误

java - java中输出变量的地址内存

java - 将 keyAdapter 替换为键绑定(bind)

java - 为什么jPanel不清除?

java - 为什么我会收到 AWT Eventqueue 空指针异常?

java - 对于JSONArray解析: TRY inside LOOP or LOOP inside TRY?