Java GPA计算器/获取所有等级字符串以创建最终gpa / Scanner / String

时间:2015-10-14 06:12:40

标签: java string loops if-statement java.util.scanner

我一直在解决这个问题:

每当我输入一系列字符串字母时,它只会将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");
         }
   }
}

1 个答案:

答案 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++;
}