Java 我有一个返回int的方法,它告诉我I';我缺少一个返回语句。在不重写方法的情况下可以修复此问题吗?
这就是方法。正如您所看到的,所有if语句中都有一个return,所以我理解它为什么不能识别输出,但是有没有办法解决这个问题Java 我有一个返回int的方法,它告诉我I';我缺少一个返回语句。在不重写方法的情况下可以修复此问题吗?,java,Java,这就是方法。正如您所看到的,所有if语句中都有一个return,所以我理解它为什么不能识别输出,但是有没有办法解决这个问题 private int bounds(int x, int y) { if (x == -1) { if (y == -1) { return life[130][70]; } else if (y == 71) { ret
private int bounds(int x, int y) {
if (x == -1) {
if (y == -1) {
return life[130][70];
}
else if (y == 71) {
return life[130][0];
}
if (0 <= y && y <= 70) {
return life[130][y];
}
}
else if (x == 131) {
if (y == -1) {
return life[0][70];
}
else if (y == 71) {
return life[0][0];
}
if (0 <= y && y <= 70) {
return life[0][y];
}
}
if (0 <= x && x <= 130) {
if (y == -1) {
return life[x][70];
}
else if (y == 71) {
return life[x][0];
}
if (0 <= y && y <= 70) {
return life[x][y];
}
}
}
私有整数边界(整数x,整数y){
如果(x==-1){
如果(y==-1){
回归生活[130][70];
}
如果(y==71),则为else{
回归生命[130][0];
}
如果(0问问自己,如果x为-2,你的方法会返回什么
意思是:编译器告诉您,通过该方法的路径没有看到返回语句。简单地说:相信编译器
您可以通过在if块之后添加一个最终的return语句来解决这个问题
但是真正的答案是:你永远不应该编写那么复杂的代码。上面的代码是维护的噩梦。它应该被重构。你需要在函数的末尾添加一个默认的返回,如果if语句中没有一个是真的那么就可以修复缺少的返回语句编译错误,而不必重写m方法:
引发RuntimeException(如果只有一些输入有效)
在末尾返回默认值(如果所有输入都有效)
在现有逻辑中,不处理-1以外的负整数(与x和y的上限相同)。如果当前未处理的输入无效,可以执行以下操作:
private int bounds(int x, int y) {
...
(Existing logic)
...
throw new IllegalArgumentException("Bad input");
}
您没有涵盖多个条件。例如,x
是-1
,y
是72
,您需要考虑每种情况,正如@fredrarson指出的那样。