如何解决在每个if&else if和else语句中都有返回,而在代码末尾有一个return
您好,我在代码末尾有一个关于多个return语句和单个return语句的快速问题。
从第一个代码开始,对于每个if,else if和else陈述使用return语句,这给了我一个错误。而且我以为我涵盖了所有可能的情况,但是它给我带来了错误提示。
错误: 缺少返回语句行:16
什么原因导致此错误?另外,有什么方法可以改善我的第二个代码?
public int caughtSpeeding(int speed,boolean isBirthday) {
if (!isBirthday)
if (speed <= 60)
return 0;
else if (speed <= 80)
return 1;
else
return 2;
if (isBirthday)
if (speed <= 65)
return 0;
else if (speed <= 85)
return 1;
else
return 2;
}
public int caughtSpeeding(int speed,boolean isBirthday) {
int flag = 0;
if (!isBirthday)
if (speed <= 60)
flag = 0;
else if (speed <= 80)
flag = 1;
else
flag = 2;
if (isBirthday)
if (speed <= 65)
flag = 0;
else if (speed <= 85)
flag = 1;
else
flag = 2;
return flag;
}
解决方法
在您的第一个代码中,您测试isBirthday
和!isBirthday
。 Java不够聪明,无法看到此列表的详尽无遗。而且您通常不会这样写:相反,您会写else
。
public int caughtSpeeding(int speed,boolean isBirthday) {
if (!isBirthday) {
if (speed <= 60)
return 0;
else if (speed <= 80)
return 1;
else
return 2;
} else {
if (speed <= 65)
return 0;
else if (speed <= 85)
return 1;
else
return 2;
}
}
还有,我有什么方法可以改善第二段代码?
是:使用第一个代码。第二个代码使用完全冗余的变量。使用第一个代码。
实际上,由于第二个代码使用了一个变量,因此Java不会在遗忘情况时警告您-它会默默返回0
,因为flag
的初始化方式是这样的。那将是一个错误。在可能的情况下,编写不会导致错误但触发编译错误的代码-这就是代码1所做的,因此是错误消息(在这种情况下为假肯定,但通常是正确的)。
好吧,对我们来说显而易见的是,如果要执行“如果是生日”和“如果不是生日”,那么Java编译器不会那样看。
对此,如果第一个'if'未被执行,第二个'if'也未被执行,那么您将在方法的末尾不执行'return'。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。