Java 尝试使用if语句确定等级

Java 尝试使用if语句确定等级,java,Java,创建一个允许用户输入数字0-100的项目。然后,该数字将用于确定该人员的等级。但是,如果用户未输入等级或等级大于100,该怎么办 我尝试了几种不同的编码选项 private void DetemineGrade() { // Determines the grade String strOutputLine; String strGrade; // Number Formatting NumberFormat nf = NumberFormat

创建一个允许用户输入数字0-100的项目。然后,该数字将用于确定该人员的等级。但是,如果用户未输入等级或等级大于100,该怎么办

我尝试了几种不同的编码选项

    private void DetemineGrade() {
    // Determines the grade

    String strOutputLine;
    String strGrade;

    // Number Formatting
    NumberFormat nf = NumberFormat.getNumberInstance();

    nf.setMinimumFractionDigits(2);
    nf.setMaximumFractionDigits(2);

    dblPointsTotal = Double.parseDouble(txtTotal.getText());

    strGrade = this.txtTotal.getText();
    if (strGrade == null || strGrade.trim().equals(""))
    {
        strOutputLine = ("A grade needs to be entered");
        this.txtMessage.setText(strOutputLine);
    }
    else if (dblPointsTotal < 60)
    {
        strOutputLine = ("Your grade is an F");
        this.txtMessage.setText(strOutputLine);
    }   
    else if (dblPointsTotal < 70)
    {
        strOutputLine = ("Your grade is a D");
        this.txtMessage.setText(strOutputLine);
    }       
    else if (dblPointsTotal < 80)
    {
        strOutputLine = ("Your grade is a C");
        this.txtMessage.setText(strOutputLine);
    }           
    else if (dblPointsTotal < 90)
    {
        strOutputLine = ("Your grade is a B");
        this.txtMessage.setText(strOutputLine);
    }               
    else if (dblPointsTotal >= 90)
    {
        strOutputLine = ("Your grade is an A");
        this.txtMessage.setText(strOutputLine);
    }

可能尝试使用异常处理,这样如果输入了无效的“数字”(或根本没有输入),程序将捕获异常并告诉用户他们的输入(或缺少输入)无效。(有关API,请参见)

正如错误所说,您正在将空字符串传递到
Double.parseDouble(txtotal.getText())
处的
parseDouble
,并且无法将空字符串解析为数字。您正在尝试转换空字符串后检查它是否为空。只有当你确定输入不是空的时候,你才应该转换它。所以现在我所有的东西都工作了,只是它仍然会给出相同的错误。我应该在哪里放置带有strGrade的部件,这样dblPointsTotal就不会检查是否为空。很抱歉,我是java新手,对于代码中的某些内容,我仍然有很多问题
Exception in thread "AWT-EventQueue-1" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at DetermineGrade.DetemineGrade(DetermineGrade.java:100)
at DetermineGrade.actionPerformed(DetermineGrade.java:79)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)