如何在不破坏当前代码的情况下修复错误"This method must return a result of type int"?



据我所知,我理解这个错误。我知道在我的程序中有一种情况,没有满足任何条件,计算机不知道该怎么做。话虽如此,我不确定如何在不破坏当前代码的情况下正确地修复它。我在所有if语句的末尾添加了一个返回0,这样就消除了错误,但在某些情况下,0输出了我当然不希望它输出的结果。我也试着把它放在else语句的最后,但我仍然得到相同的错误。

赋值说明如下:"如果两个参数相差小于1,则返回较小的数字;否则,从较大的参数中减去1,并在较小的参数上加1,并使结果平衡。">

我有:

public static int balance (int x, int y) {
if(x == y) {
System.out.println("The values X and Y (" + x +  " and " + y + ") are already balanced; They are equal to each other!");
}

else if(Math.abs(x-y) == 1) { //Checks to see if numbers are within 1 of each other (Math.abs because negative numbers don't matter in this case)
if(x > y) {
return y;
}
else return x;
}
else if(x > y) {
x = x - 1; //X is larger so we subtract
y = y + 1; //Y is smaller so we add
return balance(x,y); //Recursion happens
}
else if(x < y) {
y = y - 1; //Y is larger so we subtract
x = x + 1; //X is smaller so we add
return balance(x,y); //Recursion happens
}
}

计算和那边的一切似乎都完全按照指令要求进行。我似乎无法摆脱"这个方法必须返回类型为">error的结果,而不需要在控制台中显示随机值。

您需要做两个更改。

  1. 决定在x == y的情况下返回什么,并将适当的return语句添加到第一个分支

  2. 改变else if (x < y) {else {。你知道你已经用尽了所有的可能性,但是编译器没有。这是一种可靠的方式,告诉编译器没有其他地方可以结束。

除非您做这两件事,否则编译器认为有可能在没有遇到return语句的情况下,它可能会在方法中执行完所有行。这对于您声明为返回int的方法无效。

相关内容

最新更新