我一直在解决这个问题:
每当我输入一系列字符串字母时,它只会将0.0作为gpa列出,当它应该变化时。
当我将B B C B F输入程序时, 它输入你的GPA是0.0,虽然它应该至少高于2.0
我必须 写一个接受学生的字母成绩的程序, 计算学生的gpa, 并打印出来, 以及以下五条消息之一:
合格。 不合格,少于4节课。 不合格,gpa低于2.0。 不合格,gpa高于2.0但具有F级(注意:gpa> = 2.0)。 不合格,gpa低于2.0且具有F等级。
消息"不合格,少于4个课程"优先于其他3个不符合条件的案件。
课程不会询问用户学生报告中的成绩 卡。
该程序将继续读取成绩,直到输入非成绩字符。
此时,某些类型的循环将停止,程序将打印GPA值和资格消息。
运行输出示例:GPA = 3.75符合条件
我不需要打印任何单个成绩。
到目前为止,我已经得到了这个:import java.util.Scanner;
import java.lang.String;
public class P4_Icel_Murad_totals
{
public static void main(String[] args){
double gpa = 0;
double input = 0;
String total = "";
int classes = 0;
boolean fail = false;
do{
Scanner in = new Scanner (System.in);
System.out.print("Please enter All class totals in letter form(type stop to stop): ");
total = in.nextLine();
total = total.toLowerCase();
if(total.equals('a')){
input = 4.0;
}else if (total.equals('b')){
input = 3.0;
}else if (total.equals('c')){
input = 2.0;
}else if (total.equals('d')){
input = 1.0;
}else if (total.equals('f')){
fail = true;
}
gpa += input;
classes++;
}while (!total.equals("stop"));
System.out.println("Your GPA is: " + gpa + " ");
if (gpa >= 2 && classes >= 4 && fail == false){
System.out.println("Eligible");
}else if(classes < 4){
System.out.println("Ineligible, taking less than 4 classes");
}else if(gpa < 2.0 && fail == false && classes >= 4 ){
System.out.println("Ineligible, gpa below 2.0");
}else if(gpa >= 2.0 && fail != false && classes >= 4 ){
System.out.println("Ineligible, gpa above 2.0 but has F grade (note: gpa >= 2.0");
}else if(gpa < 2.0 && fail != false && classes >= 4 ){
System.out.println("Ineligible, gpa below 2.0 and has F grade");
}
}
}
答案 0 :(得分:0)
您输入的字符串是&#34; B B C B F&#34;因此,当您尝试使用单个字母时,您实际上正在进行if ("b b c b d".equals("a"))
等。
要分割字符串,您可以使用.split(" ")
String grades[] = total.split(" ");
将生成一个包含每个字母的数组。然后,您需要遍历每个并将其添加到gpa总计中。
total = total.toLowerCase();
String grades[] = total.split(" ");
for (String grade : grades){
if (grade.equals("a")) {
input = 4.0;
} else if (grade.equals("b")) {
input = 3.0;
} else if (grade.equals("c")) {
input = 2.0;
} else if (grade.equals("d")) {
input = 1.0;
} else if (grade.equals("f")) {
fail = true;
input = 0.0; //needed as if it fails it will still add previous value onto total
}
gpa += input;
classes++;
}