Java程序不按我希望的那样工作?

时间:2014-08-19 13:12:08

标签: java methods return

我正在制作一个成绩计算器程序,以及一个GPA计算器。在我的GPA计算器中,我有代码来获取他们为课程输入的成绩,并根据他们在计算时输入的内容显示字母等级。之后我会在计算中使用为某些数学显示的字母等级。当我运行程序时,它会一直返回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+");
}

这是我继续返回0的方法。

public double getGP(JTextField a){
    double b = 0.0;
    if(a.getText().equals("A")){
       b = 4.0;
    } else if(a.getText().equals("B+")){
       b = 3.5;
    } else if(a.getText().equals("B")){
       b = 3.0;
    } else if(a.getText().equals("C+")){
       b = 2.5;
    } else if(a.getText().equals("C")){
       b = 2.0;
    } else if(a.getText().equals("D")){
       b = 1.0;
    } else if(a.getText().equals("F")){
       b = 0.0;
    }
        return b;
}

1 个答案:

答案 0 :(得分:3)

首先,让我们修复getGP()。获取文本一次,然后修剪它并在其上调用toUpperCase()。最后,您可以使用类似

的内容消除本地double
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;
}

然后我们可以更新您的字母等级代码,通过解析数字一次可以极大地简化它,而其他只会评估前面的if是否为假(所以你可以使用) -

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+");
}