根據布爾值是否可以在函數中插入參數?根據布爾值插入參數
例如,我有這樣的一段代碼:
Math.min(boolA ? doubleValueA, boolB ? doubleValueB);
提前感謝!
根據布爾值是否可以在函數中插入參數?根據布爾值插入參數
例如,我有這樣的一段代碼:
Math.min(boolA ? doubleValueA, boolB ? doubleValueB);
提前感謝!
使用默認值(如Double.MAX_VALUE)如果boolA
或boolB
是假的:
Math.min(
(boolA) ? doubleValueA : Double.MAX_VALUE,
(boolB) ? doubleValueB : Double.MAX_VALUE
);
編輯
如果你有,你想找到的最小的變量列表,但是隻有當相應的布爾變量被設置時,纔將該列表加載到數組中並找到最小值:
ArrayList<Double> myArray = new ArrayList<Double>();
if (boolA) myArray.add(doubleValueA);
if (boolB) myArray.add(doubleValueB);
// etc
double minValue = Double.MAX_VALUE; // start with largest possible value
// loop through and replace with any smaller values
for (double val : myArray)
if (val < minValue) minValue = val;
// val now contains the smallest value
編輯2
這也可以通用於其他功能。選擇性地將您的參數添加到數組中,並將數組傳遞給函數。如果您可以控制功能定義,則可以使用variable arguments使其更簡單。
public double MyMin(double... myArray) {
double minValue = Double.MAX_VALUE; // start with largest possible value
// loop through and replace with any smaller values
for (double val : myArray)
if (val < minValue) minValue = val;
// val now contains the smallest value
return val;
}
謝謝,你的第一個命題是我在找什麼。 ArrayList實現看起來很有希望,可以用於其他項目。 – EthanM 2011-03-07 20:14:02
如果您使用三元運算符,則需要假條件。假設你想確保如果boolA爲false,則doubleValueB將爲min,而如果boolB爲false doubleValueA將爲min。你可以使其他條件成爲最大整數,然後就是這樣。
當然,如果boolA和boolB都爲false,那麼您的值將是最大整數值。如果這種情況發生,那麼你需要額外的代碼來處理它。
Math.min(boolA ? doubleValueA : Integer.MAX_VALUE, boolB ? doubleValueB : Integer.MAX_VALUE);
注意Math.min(int, int)不帶可變參數。如果你想用here中描述的可變長度參數列表,你需要用你自己的min函數和可變參數。
Java沒有像操作
boolA ? doubleValueA
boolA ? doubleValueA : defaultValue
這意味着如果boolA
是真的,那麼使用doubleValueA
以其它方式使用defaultValue
。否則
Math.min(boolA ? doubleValueA, boolB ? doubleValueB);
是毫無意義的,如果boolA
是假的(除特殊處理,在這種情況下,與null
去,但Java沒有)
完全,你應該改變
Math.min(boolA ? doubleValueA : defaultA, boolB ? doubleValueB : defaultB);
if(boolA && boolB) {
Math.min(doubleA, doubleB);
} else if(boolA) {
doubleA;
} else if(boolB) {
doubleB;
} else {
????
}
的確如此,儘管我最初想要寫一個更緊湊的方式。這就是我開始的。雖然謝謝! – EthanM 2011-03-07 20:16:10
你期望什麼,例如如果boolA = false? – Howard 2011-03-07 20:04:26
例如,如果'boolA'爲false,參數是什麼? – mellamokb 2011-03-07 20:04:43
他在找可變參數嗎? – 2011-03-07 20:06:08