我正在研究一种计算特定学期GPA的方法,我的问题是在添加条件语句后,成绩不会添加到tGrade。删除" if" s"否则如果" s会解决我的问题,但它会输出错误的输出,所以任何关于我可能做错的想法?
public double computeGPA(ArrayList<Course> courseTaken) {
double cGPA;
int tGrade = 00;
int tUnits = 00;
for (int x=0; x<courseTaken.size(); x++) {
for(int y=1; y<courseTaken.size(); y++) {
if(courseTaken.get(x).getCGrade()>=97) {
courseTaken.get(x).setCGrade(4);
} else if (courseTaken.get(x).getCGrade()>=89 && courseTaken.get(x).getCGrade()<=96) {
courseTaken.get(x).setCGrade(3);
} else if (courseTaken.get(x).getCGrade()>=80 && courseTaken.get(x).getCGrade()<=88) {
courseTaken.get(x).setCGrade(2);
} else if (courseTaken.get(x).getCGrade()>=74 && courseTaken.get(x).getCGrade()<=79) {
courseTaken.get(x).setCGrade(1);
} else {
courseTaken.get(x).setCGrade(0);
}
tGrade = courseTaken.get(x).getCGrade()+courseTaken.get(y).getCGrade();
tUnits = courseTaken.get(x).getCUnits()+courseTaken.get(y).getCUnits();
}
}
cGPA = (tGrade*tUnits)/tUnits;
return cGPA;
}
到目前为止,问题在于代码直接用于破坏其他语句的else语句。要添加,数据存储在文本文件中,并且课程的每个对象的等级都大于85。
答案 0 :(得分:0)
所以经过一些阅读后,我就想到了这一点。当然不是最好的方法(重复调用,每个循环可能更好,更多),但我会继续改进它。
public double computeGPA(ArrayList<Course> courseTaken) {
double cGPA;
double tUnits = 00;
double tGrade = 00;
for(int y=0; y<courseTaken.size(); y++) {
tUnits += courseTaken.get(y).getCUnits();
}
for(int x=0; x<courseTaken.size(); x++) {
if(courseTaken.get(x).getCGrade()>=97)
tGrade += courseTaken.get(x).getCUnits()*4;
else if(courseTaken.get(x).getCGrade()>=93 && courseTaken.get(x).getCGrade()<=96)
tGrade += courseTaken.get(x).getCUnits()*3.5;
else if(courseTaken.get(x).getCGrade()>=89 && courseTaken.get(x).getCGrade()<=92)
tGrade += courseTaken.get(x).getCUnits()*3;
else if(courseTaken.get(x).getCGrade()>=85 && courseTaken.get(x).getCGrade()<=88)
tGrade += courseTaken.get(x).getCUnits()*2.5;
else if(courseTaken.get(x).getCGrade()>=80 && courseTaken.get(x).getCGrade()<=84)
tGrade += courseTaken.get(x).getCUnits()*2;
else if(courseTaken.get(x).getCGrade()>=75 && courseTaken.get(x).getCGrade()<=79)
tGrade += courseTaken.get(x).getCUnits()*1.5;
else if(courseTaken.get(x).getCGrade()>=70 && courseTaken.get(x).getCGrade()<=74)
tGrade += courseTaken.get(x).getCUnits()*1;
else
tGrade += courseTaken.get(x).getCUnits()*0;
}
cGPA = tGrade/tUnits;
return cGPA;
}//computeGPA
答案 1 :(得分:-1)
为了提高可读性和效率,我建议查看switch语句,而不是使用大量的if语句。
例如,如果:
If (x==1){ }
If (x==2){ }
......依此类推,你可以测试一个变量,并检查一下使用情况。
Switch(x){
case 1:
System.out.print("1")
break;
case 2:
System.out.print("2")
break;
}
无论您想测试多少个值。对不起,如果它写得不好我会在我的手机上分钟。