我是靠谱客的博主 鲤鱼画笔,最近开发中收集的这篇文章主要介绍java返回一个布尔值_关于java:返回布尔值的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

好的,所以我的问题是关于布尔值的回报。 对于我的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;

}

}

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

该错误是否类似于"并非所有代码路径都返回值"?

除了对遗漏的收益发表评论外,我还注意到您引用的代码并未根据其逻辑缩进。 那可能是复制代码的产物。 我确实建议使用可以格式化Java的编辑器,并定期重新格式化以使所有内容在逻辑上保持一致。

即使您可能永远不会到达它,也需要在方法的末尾放置一个return语句(编译器不够聪明,不足以说明错误)。

例如,即使这样也不会编译:

public static boolean foo() {

if (true)

return true;

}

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

当我这样做时,它只是跳到最后并返回该值!

@PavelVaysberg然后您的for循环一定存在问题(即那不是将return语句放在末尾的结果)。

@ A.R.S。从我的评论中找出答案(摇摇头)

@evanmcdonnal我希望你讽刺:P

我认为最后一个循环有问题。如果从不满足返回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;

}

是的,那就是我的意思。

然后,您应该添加" return true";最后,目标是在此之前检测出应返回false的所有情况。

您必须在ALL代码路径中显式返回boolean(true / false)。因为函数的返回类型为" boolean"。

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

如果您不想写很多" return xx"语句,则可以将此函数的返回类型更改为" void"。在错误情况下抛出Exception。

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

如果在方法的末尾添加return true或false,则该方法仅返回该值并跳过我的所有循环...也许它没有进入循环,请检查错误。

@PavelVaysberg好吧,这是另一个问题。检查完该代码后,我可以保证您不会由于"并非所有代码路径都返回一个值"的错误而进行编译。在该方法的末尾添加return语句不会影响该方法之前的代码的执行。

那我的问题是什么?我不明白为什么该方法不会执行我的for循环...

@PavelVaysberg您的所有循环控制变量(即myCourses.Length)是否都大于0?您的代码不是很容易阅读,但是如果启动程序时您拥有0门课程并且所有这些值均为0,那么循环将永远不会执行,我不会感到惊讶。另外,据我所知,else continue;行均无任何作用。如果您的if条件不满足并且您没有其他需要执行的操作,则没有理由拥有else。

在使用if语句的任何地方,它可能的else也必须返回,或者流必须转到另一个return。ELSE缺少return。

最后

以上就是鲤鱼画笔为你收集整理的java返回一个布尔值_关于java:返回布尔值的方法的全部内容,希望文章能够帮你解决java返回一个布尔值_关于java:返回布尔值的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部