-2

My method keeps returning 0. Can someone help me find why the GPA will not properly compute?

public static double getGPA(String a)
{
    double value = 0;
    double sum = 0;
    for(int i = 0; i<a.length(); i++)
    {
        String grade = a.substring(i,i+1);
        if(grade == "A") value = 4;
        if(grade == "B") value = 3;
        if(grade == "C") value = 2;
        if(grade == "D") value = 1;
        if(grade == "F") value = 0;
        sum += value;
    }
    return sum/(a.length()+1);
}
Wai Ha Lee
  • 8,598
  • 83
  • 57
  • 92
thr
  • 1

1 Answers1

0

You should be using .equals(), not ==.

You've also got a couple of lesser mistakes:

  1. You're dividing by the string length plus one.
  2. You're not handling invalid inputs sensibly. Error or ignore.

Here's a corrected copy:

public static double getGPA(String a)
{
    long total = 0;
    long count = 0;
    for(int i = 0; i<a.length(); i++)
    {
        String grade = a.substring(i,i+1);
        count++;
        if(grade.equals("A")) total += 4;
        else if(grade.equals("B")) total += 3;
        else if(grade.equals("C")) total += 2;
        else if(grade.equals("D")) total += 1;
        else if(grade.equals("F")) total += 0;
        else count--;  /* Ignore invalid characters, e.g. whitespace. */
    }
    return total / (double) count;
}
Alice Purcell
  • 12,622
  • 6
  • 51
  • 57