Java程序没有按我希望的顺序运行?

Java程序没有按我希望的顺序运行?,java,methods,return,Java,Methods,Return,我正在为成绩计算器和GPA计算器制作一个程序。在我的GPA计算器中,我有代码来计算他们为课程输入的分数,它将根据他们在点击calculate时输入的内容显示字母分数。然后,我在计算中使用一些数学显示的字母等级。当我运行这个程序时,它总是返回0,尽管在我的代码中获取字母分数的代码非常高,而另一个数学是接近末尾的一个方法 if(Double.parseDouble(txt11.getText()) < 50){ txt12.setText("F"); } els

我正在为成绩计算器和GPA计算器制作一个程序。在我的GPA计算器中,我有代码来计算他们为课程输入的分数,它将根据他们在点击calculate时输入的内容显示字母分数。然后,我在计算中使用一些数学显示的字母等级。当我运行这个程序时,它总是返回0,尽管在我的代码中获取字母分数的代码非常高,而另一个数学是接近末尾的一个方法

if(Double.parseDouble(txt11.getText()) < 50){
                txt12.setText("F");
} else if(Double.parseDouble(txt11.getText()) >= 50 && Double.parseDouble(txt11.getText()) <= 59){
                    txt12.setText("D");
} else if(Double.parseDouble(txt11.getText()) >= 60 && Double.parseDouble(txt11.getText()) <= 64){
                    txt12.setText("C");
} else if(Double.parseDouble(txt11.getText()) >= 65 && Double.parseDouble(txt11.getText()) <= 69){
                    txt12.setText("C+");
} else if(Double.parseDouble(txt11.getText()) >= 70 && Double.parseDouble(txt11.getText()) <= 74){
                    txt12.setText("B");
} else if(Double.parseDouble(txt11.getText()) >= 75 && Double.parseDouble(txt11.getText()) <= 79){
    txt12.setText("B+");
} else if(Double.parseDouble(txt11.getText()) >= 80 &&           Double.parseDouble(txt11.getText()) <= 84){
                    txt12.setText("A");
} else if(Double.parseDouble(txt11.getText()) >= 85){
                    txt12.setText("A+");
}

首先,让我们修复
getGP()
。获取文本一次,然后修剪它并对其调用
toUpperCase()
。最后,您可以通过以下方式消除本地

public double getGP(JTextField a) {
    // Don't forget, this needs to be txt12 (not txt11).
    String str = a.getText();
    str = (str != null) ? str.trim().toUpperCase() : "";
    if (str.equals("A")) {
        return 4.0;
    } else if (str.equals("B+")) {
        return 3.5;
    } else if (str.equals("B")) {
        return 3.0;
    } else if (str.equals("C+")) {
        return 2.5;
    } else if (str.equals("C")) {
        return 2.0;
    } else if (str.equals("D")) {
        return 1.0;
    }
    return 0.0;
}
然后我们可以更新你的字母等级代码,它可以通过对数字进行一次解析而大大简化,而else只会在前面的if为false时进行计算(因此你可以使用)-

Double val=Double.parseDouble(txt11.getText());
如果(val<50){
txt12.setText(“F”);

}else if(val)您是否尝试过使用调试器?您在哪里调用
getGP(JTextField a)
?那么,您是否通过调试器运行了它以查看a.getText()是什么实际返回?就我个人而言,如果是这样确定的,我会使用等级/值的映射。我很欣赏代码修复,但它并不能解决我的问题,即getGP总是返回0.0,即使字母等级设置远高于我调用方法的位置。@Kalkrin记录字母等级。它不能像你想的那样设置。@Kalkrin在f中unctoin getGP中,我想您省略了“A+”。@gaemaf这实际上是个问题,因为当我测试它时,我刚刚抛出了85..这是A+,所以它只是返回默认值0.0。愚蠢的错误。
public double getGP(JTextField a) {
    // Don't forget, this needs to be txt12 (not txt11).
    String str = a.getText();
    str = (str != null) ? str.trim().toUpperCase() : "";
    if (str.equals("A")) {
        return 4.0;
    } else if (str.equals("B+")) {
        return 3.5;
    } else if (str.equals("B")) {
        return 3.0;
    } else if (str.equals("C+")) {
        return 2.5;
    } else if (str.equals("C")) {
        return 2.0;
    } else if (str.equals("D")) {
        return 1.0;
    }
    return 0.0;
}
Double val = Double.parseDouble(txt11.getText());
if (val < 50) {
    txt12.setText("F");
} else if (val <= 59) {
    txt12.setText("D");
} else if (val <= 64) {
    txt12.setText("C");
} else if (val <= 69) {
    txt12.setText("C+");
} else if (val <= 74) {
    txt12.setText("B");
} else if (val <= 79) {
    txt12.setText("B+");
} else if (val <= 84) {
    txt12.setText("A");
} else {
    txt12.setText("A+");
}