为什么我的方法不返回字符串或char到main?

时间:2018-09-22 23:53:29

标签: java

我正在尝试使用多种方法来完成一个简单的程序来计算测试成绩,但是我的方法不会返回任何字母。 IDE说我的方法必须返回类型为String的结果。

public static String getGrade1(int num1) {
    if (num1 <= 100 && num1 >= 90) {
        String a = "A";
        return a;
    } else if (num1 < 90 && num1 >= 80) {
        String b = "B";
        return b;
    }else if (num1 < 80 && num1 >= 70) {
        String c = "C";
        return c;
    }else if (num1 < 70 && num1 >= 60) {
        String d = "D";
        return d;
    }else if (num1 < 60) {
        String f = "F";
        return f;
    }
}

4 个答案:

答案 0 :(得分:1)

您的函数必须始终返回一个非void类型的值。问题在于,如果您调用getGrade1(110),则函数将无法返回return语句。在末尾添加else子句(不带尾随if),该子句将返回某些内容,并且应停止向您发出警告。 该代码应该可以工作:

public static String getGrade1(int num1) {
    if (num1 <= 100 && num1 >= 90) {
        return "A";
    } else if (num1 < 90 && num1 >= 80) {
        return "B";
    } else if (num1 < 80 && num1 >= 70) {
        return "C";
    } else if (num1 < 70 && num1 >= 60) {
        return "D";
    } else if (num1 < 60) {
        return "F";
    } else {
        return "";
    }
}

答案 1 :(得分:1)

要解决您的问题,最简单的方法是在方法末尾添加默认的return语句,例如:

public String method() {
    // Code
    return ""; // Return some default String value
}

注意:

如果您希望发生异常而不是返回默认值,则可以执行以下操作:

public String method() throws Exception {
    // Code
    throw new Exception(); // Throw some exception
}

答案 2 :(得分:0)

尝试一下:

 public static String getGrade1(int num1) {
    String grade = "";
  if (num1 <= 100 && num1 >= 90) {
        grade = "A";
    } else if (num1 < 90 && num1 >= 80) {
        grade = "B";
    }else if (num1 < 80 && num1 >= 70) {
        grade = "C";
    }else if (num1 < 70 && num1 >= 60) {
        grade = "D";
    }else if (num1 < 60) {
        grade = "F";
    }else{
        grade = "NA";
    }
     return grade;
}

答案 3 :(得分:-4)

我相信,如果您的return语句在if-else语句中,则编译器不会将其视为return语句。做vonNikalasson所做的事情,但是在结尾处摆脱else语句,然后在结尾处返回。

public static String getGrade1(int num1) {
    if (num1 <= 100 && num1 >= 90) {
        return "A";
    } else if (num1 < 90 && num1 >= 80) {
        return "B";
    } else if (num1 < 80 && num1 >= 70) {
        return "C";
    } else if (num1 < 70 && num1 >= 60) {
        return "D";
    } else if (num1 < 60) {
        return "F";
    }
    return;
}