如果我將這段代碼的else部分更改爲else語句,它運行時沒有任何問題,所以我得到如何使其運行。我有點困惑的是爲什麼當它處於當前形式時我得到了一個丟失的return語句錯誤。我的返回取決於負值的布爾變量的值。我涵蓋了真實和虛假的狀態,是不是足夠覆蓋一切?爲什麼這段代碼有一個缺失的return語句錯誤?
或者是我總是必須在else中有return語句,或者爲我的函數的底部添加一個無意義的返回值,以便編譯器接受我的代碼作爲覆蓋每種情況?
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public boolean posNeg(int a, int b, boolean negative) {
if (!negative) {
return (a < 0 && b > 0) || (a > 0 && b < 0);
}
else if (negative) {
return (a < 0 && b < 0);
}
}
public static void main (String[] args) throws java.lang.Exception
{
}
}
如果'!negative'爲'false',不是'negative''true'?你爲什麼要這樣寫?我想你可以抱怨編譯器應該能夠爲你弄清楚,但它顯然不能。爲什麼呢?你知道編譯器試圖弄清楚你的怪異代碼是否真的可以寫成if-else是多麼複雜嗎? – Jared
你不需要'if':'return(negative &&(a <0 && b <0))|| (!negative &&((a < 0 && b > 0)||(a> 0 && b <0)));' – dasblinkenlight
@Jared - 的確如此。編譯器不能總是確認所有的可能性都已經被考慮過了,但是如果你使用else塊或者在if/elses之後有返回值,它可以很容易地確定它。請記住,if語句中的布爾表達式並不總是像你的例子那樣簡單直接。 – jahroy