Используйте значение по умолчанию (например, Double.MAX_VALUE), если boolA
или boolB
равно false:
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
Это также может применяться в целом к другим функциям.Выборочно добавьте свои параметры в массив и передайте массив функции.Если у вас есть контроль над определением функции, вы можете использовать переменные аргументы , чтобы упростить ее.
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;
}