![](/img/trans.png)
[英]how can i get the total number of similar grade letters in my student grade calculator program
[英]What is wrong with my letter to number grade calculator?
我正在尝试使用字母等级并返回数字等级的方法。 它仅适用于没有正负的字母。 这是我所拥有的:
public class Grade{
private String letterGrade;
private double numericGrade;
public Grade(String letterGrade)
{
this.letterGrade = letterGrade;
this.numericGrade = numericGrade;
}
public void getNumericGrade()
{
if (letterGrade.equals("A"))
{
numericGrade = 4.0;
}
else if (letterGrade.equals("B"))
{
numericGrade = 3.0;
}
else if (letterGrade.equals("C"))
{
numericGrade = 2.0;
}
else if (letterGrade.equals("D"))
{
numericGrade = 1.0;
}
else if (letterGrade.equals("F"))
{
numericGrade = 0.0;
}
if (letterGrade.substring(1).equals("+"))
{
numericGrade += .3;
}
else if (letterGrade.substring(1).equals("-"))
{
numericGrade -= .3;
}
System.out.println(numericGrade);
}
它给“ A”提供4.0,但给A-提供-0.3。 这里发生了什么?
将您的equals
更改为startsWith
调用(因为“ A +”不等于“ A”),然后在构造函数中进行初始化 (将numericGrade
初始化为它本身会发出警告)。 吸气剂应返回值(不设置值)。 就像是,
private String letterGrade;
private double numericGrade;
public Grade(String letterGrade) {
this.letterGrade = letterGrade;
if (letterGrade.startsWith("A")) {
numericGrade = 4.0;
} else if (letterGrade.startsWith("B")) {
numericGrade = 3.0;
} else if (letterGrade.startsWith("C")) {
numericGrade = 2.0;
} else if (letterGrade.startsWith("D")) {
numericGrade = 1.0;
} else if (letterGrade.startsWith("F")) {
numericGrade = 0.0;
}
if (letterGrade.substring(1).equals("+")) {
numericGrade += .3;
} else if (letterGrade.substring(1).equals("-")) {
if (numericGrade > 0) {
numericGrade -= .3; // <-- or an F- is -0.3
}
}
}
public double getNumericGrade() {
// System.out.println(numericGrade);
return numericGrade;
}
好吧,通过它。 如果您通过“ A-”,那么“ A-”不等于“ A”,因此您不会获得4.0(或其他字母等级)的分数。 但是您的确得到了负值-0.3 ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.