经过
昨天下午写作业时发现一个奇怪点,就是关于int型数据的返回值的一个问题。
public class Test {
public static void main(String[] args) {
method1(1,2);
};
public static void method1(int n, int m) {
n += m;
method2(3.4);
}
public static int method2(double n) {
if (n > 0) return 1;
else if (n == 0) return 0;
else if (n < 0) return -1;
}
}

我的3个return的判断条件已经包含了所有n的取值范围。但编译却不通过。而且显示
结果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZZiRPwJd-1585315831940)(C67F5A9966BF4DEB86955AE03974A747)]](https://i-blog.csdnimg.cn/blog_migrate/5eed428327b646f9d100aeb70b67b1ca.png)
我翻看书,最后发现这是由于Java编辑器的判断造成的。
还有一种办法就是再加一个return就行。虽然这个return永远不会被调用,但是编辑器就知道了所有的情况都可以有返回值。
public class Test {
public static void main(String[] args) {
method1(1,2);
};
public static void method1(int n, int m) {
n += m;
method2(3.4);
}
public static int method2(double n) {
if (n > 0) return 1;
else if (n == 0) return 0;
else if (n < 0) return -1;
return 0;
}
}
本文探讨了Java中方法返回值的处理方式,特别是在方法体内所有可能路径都包含返回语句时,编译器如何理解代码的完整性。通过一个具体示例,展示了即使在条件语句覆盖所有可能情况时,仍需显式提供一个额外的返回语句来满足编译器的要求。
1万+

被折叠的 条评论
为什么被折叠?



