【问题标题】:Create Java exception when String is entered instead of integer输入字符串而不是整数时创建Java异常
【发布时间】:2013-12-05 21:32:37
【问题描述】:

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

这是我现在拥有的带有 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 或其他返回类型目前并不重要,只有字符串。

提前致谢!

【问题讨论】:

    标签: java swing exception netbeans


    【解决方案1】:

    要捕捉输入的字符串(空白文本也很重要),请使用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).");
    }
    

    【讨论】:

      【解决方案2】:

      使用 NumberFormatException。当将 String 转换为数字的方法接收到无法转换的 String 时,将引发此错误。比如 Integer.parseInt("sadfasd");

      【讨论】:

        【解决方案3】:

        您可以将 NumberFormatException javaDoc 或 Exception e 用于一般异常,然后打印一条消息,例如:Invalid entry。

        catch (NumberFormatException e) {
            System.out.println("Invalid entry, please enter a number");
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-14
          • 2020-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-01
          相关资源
          最近更新 更多