返回布尔值的方法

时间:2012-11-15 03:06:14

标签: java arrays methods boolean

好的,所以我的问题是关于布尔返回。对于我的Comp Sci作业,我必须使用方法制作课程注册程序,其中一个是添加课程方法。基本上,您在目录中搜索类,如果匹配,则将其添加到学生计划并返回布尔值true。我这样做了,但由于某种原因它给了我一个错误。这是代码:

public static boolean addCourse(
    Course[] catalog,
    Course[] mySchedule,
    int myNumCourses,
    int dept,
    int courseNum)
{
    int j;
    int i;
    int k;
    int deptCat;
    int courseNumCat;
    Course courseAdd = null;
    char checkDay;
    int checkTime;



    if (mySchedule.length == myNumCourses) {
        return false;
    }
        for (i = 0 ; i < catalog.length ; i++) {
            Course course = catalog[i];
            deptCat = course.getDepartment();
            courseNumCat = course.getCourseNumber();
            if (deptCat == dept && courseNumCat == courseNum) {
                courseAdd = catalog[i];
                break;
            }
            else continue; }
        for (j = 0 ; j < myNumCourses ; j++) {
            if (mySchedule[j] == null) {
                mySchedule[j] = courseAdd;
                return true;
                }
                else continue;
                }

    for (k = 0 ; k < mySchedule.length ; k++) {
        Course course = mySchedule[k];
        if (course != null) {
            checkDay = course.getDay();
            checkTime = course.getPeriod();
            if (checkDay == courseAdd.getDay() && checkTime == courseAdd.getPeriod()) {
                return false;
            }
        }
        else continue;

    }







}

为什么不识别布尔返回值?是因为我将它们放在一个循环中吗?

5 个答案:

答案 0 :(得分:3)

需要在方法的最后放置一个return语句,即使你可能知道它永远不会被触及(编译器不够聪明,不知道,这解释了错误。)

例如,即使这样编译:

public static boolean foo() {
    if (true)
        return true;
}

除非我们添加最终的return语句。你所拥有的是类似的。

答案 1 :(得分:2)

将返回值放在循环中没有任何问题,但是,编译器不能保证此方法将返回值,从而引发错误。在方法的最后,您需要返回true或false,以最合适的为准。您的所有返回都在条件限制内,因此可能无法执行,而您的函数没有返回语句。

答案 2 :(得分:2)

你必须在ALL代码路径中显式返回一个布尔值(true / false)。因为你的函数的返回类型是“boolean”。

在您的情况下,您必须在最后一个循环之后添加一个return语句。

如果您不想写入许多“return xx”语句,可以将此函数的返回类型更改为“void”。并在错误情况下抛出异常。

答案 3 :(得分:2)

我认为最后一个循环存在问题。如果永远不满足返回false的条件,它将一直持续到计划结束,而不返回任何内容。如果你要在方法结束时添加一个返回,那么这个循环可能会落到它上面。如果没有'return false'执行,你的意思是在循环后返回true吗?

    for (k = 0; k < mySchedule.length; k++) {
      Course course = mySchedule[k];
      if (course != null) {
        checkDay = course.getDay();
        checkTime = course.getPeriod();
        if (checkDay == courseAdd.getDay()
            && checkTime == courseAdd.getPeriod()) {
          return false;
        }
      } else
        continue;
    }

答案 4 :(得分:1)

无论你使用if语句,它的可能else也必须返回,或者流必须转到另一个return.ELSE返回时缺少。