據我所知,我理解這個錯誤。我知道在我的程式中存在不滿足任何條件并且計算機不知道該怎么做的情況。話雖如此,我不確定如何在不破壞當前代碼的情況下正確修復它。我在所有 if 陳述句的末尾添加了一個 return 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
}
}
那一邊的計算和所有內容似乎都按照說明要求進行。我似乎無法擺脫“此方法必須回傳 int 型別的結果”錯誤,而無需在控制臺中顯示不需要的隨機值。
uj5u.com熱心網友回復:
您需要進行兩項更改。
決定在 where 的情況下回傳什么
x == y,并將適當的return陳述句添加到第一個分支。更改
else if (x < y) {為else {。你知道你已經用盡了所有的可能性,但編譯器沒有。這是告訴編譯器沒有其他地方可以結束的可靠方式。
除非你做這兩件事,否則編譯器認為它可能會在方法中用完要執行的行,而不會遇到return陳述句。這對于您宣告為回傳int.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/313117.html
