0

I get a missing return statement error on the last bracket and I have no idea why. This method basically takes in a string that corresponds to the students course and the current survey question they are on. The outer if statements correspond to the subject (eg: math, science, english...). The for loop iterates through an array and matches the user input ("US History") with a string in an array list. If they are equal, it returns the index at which it was found. Else, it continues the for loop. The method returns an int, but I still get an error on the last bracket. PLEASE HELP!

 public static int findNumber(String course, int currentQuestion) {
    String newCourse = course.toLowerCase();

    if (RateDriver.levelText.equals("math")) {
      for (int i = 0; i < RateSurvey.math.length-1;i++) {
        if (newCourse.equals(RateSurvey.math[i])) return survey[currentQuestion][i];
      }
      return 100;
    }

    else if (RateDriver.levelText.equals("science")) {
      for (int i = 0; i < RateSurvey.science.length-1;i++) {
        if (newCourse.equals(RateSurvey.science[i])) return survey[currentQuestion][i];

      }
      return 100;
    }
    else if (RateDriver.levelText.equals("english")) {
      for (int i = 0; i < RateSurvey.english.length-1;i++) {
        if (newCourse.equals(RateSurvey.english[i])) return survey[currentQuestion][i];

      }
      return 100;
    }
    else if (RateDriver.levelText.equals("social studies")) {
      for (int i = 0; i < RateSurvey.social.length-1;i++) {
        if (newCourse.equals(RateSurvey.social[i]))  return survey[currentQuestion][i];
      }
    }
    else if (RateDriver.levelText.equals("art")) {
      for (int i = 0; i < RateSurvey.art.length-1;i++) {
        if (newCourse.equals(RateSurvey.art[i])) return survey[currentQuestion][i];
      }
      return 100;
    }
    else if (RateDriver.levelText.equals("pe")) {
      for (int i = 0; i < RateSurvey.pe.length-1;i++) {
        if (newCourse.equals(RateSurvey.pe[i])) return survey[currentQuestion][i];
      }
    }
    else if (RateDriver.levelText.equals("chinese")) {
      for (int i = 0; i < RateSurvey.chinese.length-1;i++) {
        if (newCourse.equals(RateSurvey.chinese[i])) return survey[currentQuestion][i];
      }
    }
    else if (RateDriver.levelText.equals("japanese")) {
      for (int i = 0; i < RateSurvey.japanese.length-1;i++) {
        if (newCourse.equals(RateSurvey.japanese[i])) return survey[currentQuestion][i];
      }
      return 100;
    }
    else if (RateDriver.levelText.equals("french")) {
      for (int i = 0; i < RateSurvey.french.length-1;i++) {
        if (newCourse.equals(RateSurvey.french[i])) return survey[currentQuestion][i];
      }
      return 100;
    }
    else if (RateDriver.levelText.equals("spanish")) {
      for (int i = 0; i < RateSurvey.spanish.length-1;i++) {
        if (newCourse.equals(RateSurvey.spanish[i])) return survey[currentQuestion][i];
      }
      return 100;
    }
    else if (RateDriver.levelText.equals("hawaiian")) {
      for (int i = 0; i < RateSurvey.hawaiian.length-1;i++) {
        if (newCourse.equals(RateSurvey.hawaiian[i])) return survey[currentQuestion][i];
      }
      return 100;
    }
    else return 100;

  **}** // this is where I get the error

3 Answers 3

2

Some of the parts of your code don't return anything if nothing is returned in the for loop, such as this one:

else if (RateDriver.levelText.equals("social studies")) {
  for (int i = 0; i < RateSurvey.social.length-1;i++) {
    if (newCourse.equals(RateSurvey.social[i]))  return survey[currentQuestion][i];
  }
}

So if the program reaches this part of the code and doesn't end up returning survey[currentQuestion][i], then it will skip to the end of the if-else chain and not return anything. You should change them to something like this:

else if (RateDriver.levelText.equals("social studies")) {
  for (int i = 0; i < RateSurvey.social.length-1;i++) {
    if (newCourse.equals(RateSurvey.social[i]))  return survey[currentQuestion][i];
  }
  return 100;
}
Sign up to request clarification or add additional context in comments.

1 Comment

You might want to consider removing all of the return 100 statements and following John's advice in his answer. It would make the code cleaner.
2

Just remove the else before the last return 100; That means it will happen for every case that isn't handle by the huge if statement. It may be the same thing, but it just makes the code clearer.

Comments

0

You need to add an additional bracket after the one that is getting you an error.

The following doesn't get any compiling errors:

public static int findNumber(String course, int currentQuestion) {
            String newCourse = course.toLowerCase();

            if (RateDriver.levelText.equals("math")) {
              for (int i = 0; i < RateSurvey.math.length-1;i++) {
                if (newCourse.equals(RateSurvey.math[i])) return survey[currentQuestion][i];
              }
              return 100;
            }

            else if (RateDriver.levelText.equals("science")) {
              for (int i = 0; i < RateSurvey.science.length-1;i++) {
                if (newCourse.equals(RateSurvey.science[i])) return survey[currentQuestion][i];

              }
              return 100;
            }
            else if (RateDriver.levelText.equals("english")) {
              for (int i = 0; i < RateSurvey.english.length-1;i++) {
                if (newCourse.equals(RateSurvey.english[i])) return survey[currentQuestion][i];

              }
              return 100;
            }
            else if (RateDriver.levelText.equals("social studies")) {
              for (int i = 0; i < RateSurvey.social.length-1;i++) {
                if (newCourse.equals(RateSurvey.social[i]))  return survey[currentQuestion][i];
              }
            }
            else if (RateDriver.levelText.equals("art")) {
              for (int i = 0; i < RateSurvey.art.length-1;i++) {
                if (newCourse.equals(RateSurvey.art[i])) return survey[currentQuestion][i];
              }
              return 100;
            }
            else if (RateDriver.levelText.equals("pe")) {
              for (int i = 0; i < RateSurvey.pe.length-1;i++) {
                if (newCourse.equals(RateSurvey.pe[i])) return survey[currentQuestion][i];
              }
            }
            else if (RateDriver.levelText.equals("chinese")) {
              for (int i = 0; i < RateSurvey.chinese.length-1;i++) {
                if (newCourse.equals(RateSurvey.chinese[i])) return survey[currentQuestion][i];
              }
            }
            else if (RateDriver.levelText.equals("japanese")) {
              for (int i = 0; i < RateSurvey.japanese.length-1;i++) {
                if (newCourse.equals(RateSurvey.japanese[i])) return survey[currentQuestion][i];
              }
              return 100;
            }
            else if (RateDriver.levelText.equals("french")) {
              for (int i = 0; i < RateSurvey.french.length-1;i++) {
                if (newCourse.equals(RateSurvey.french[i])) return survey[currentQuestion][i];
              }
              return 100;
            }
            else if (RateDriver.levelText.equals("spanish")) {
              for (int i = 0; i < RateSurvey.spanish.length-1;i++) {
                if (newCourse.equals(RateSurvey.spanish[i])) return survey[currentQuestion][i];
              }
              return 100;
            }
            else if (RateDriver.levelText.equals("hawaiian")) {
              for (int i = 0; i < RateSurvey.hawaiian.length-1;i++) {
                if (newCourse.equals(RateSurvey.hawaiian[i])) return survey[currentQuestion][i];
              }
              return 100;
            }
            else return 100;

          }
        } //ADDED

1 Comment

thanks for putting the whole code in again. I can see exactly what you changed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.