我想創建一個返回三個值(全部字節)的最小值的方法。這是我的:將三個數字與Java邏輯三元運算符進行比較?
public static byte findSmallestOfThree(byte n1, byte n2, byte n3) {
return n1 > n2 ? n2 : n1 > n3 ? n3 : n1;
}
現在,我遇到的問題是,它並不總是工作。
這裏有一些輸入,輸出:
9, 10, 11 -> 9
10, 9, 11 -> 9
10, 11, 9 -> 9
11, 10, 9 -> 10
正如你可以看到,當我進入11,10,9(按順序),我得到了10的結果(即使它應該已經9)。
我的邏輯有什麼問題?我認爲我已經搞砸了三元運營商的東西,但我不知道它是什麼...
我愛三元運算儘可能未來的傢伙;但這種ascii的歪曲很好地說明了爲什麼三元組不應該像這樣鏈接。當然,我*可以*坐在這裏,假裝是javacc,並找出嵌套的位置在哪裏......但我更願意看到幾個能夠解除我職責的el-elses。這裏的其他答案表明你精神上混淆了你的比較;當你在一個聲明中嘗試做太多時,這很容易做到! – yshavit 2012-02-07 00:00:18