Java 根据布尔值插入参数
是否可以根据布尔值在函数中插入参数 例如,我有一段代码:Java 根据布尔值插入参数,java,methods,parameters,Java,Methods,Parameters,是否可以根据布尔值在函数中插入参数 例如,我有一段代码: Math.min(boolA ? doubleValueA, boolB ? doubleValueB); 提前谢谢 如果使用三元运算符,则需要一个假条件。假设您希望确保如果boolA为false,则doubleValueB将为最小值,而如果boolB为false,则doubleValueA将为最小值。您可以将其他条件设置为最大整数,然后就是这种情况 当然,如果boolA和boolB都为false,那么您的值将是最大整数值。如果这可能发
Math.min(boolA ? doubleValueA, boolB ? doubleValueB);
提前谢谢 如果使用三元运算符,则需要一个假条件。假设您希望确保如果boolA为false,则doubleValueB将为最小值,而如果boolB为false,则doubleValueA将为最小值。您可以将其他条件设置为最大整数,然后就是这种情况 当然,如果boolA和boolB都为false,那么您的值将是最大整数值。如果这可能发生,那么您将需要额外的代码来处理它
Math.min(boolA ? doubleValueA : Integer.MAX_VALUE, boolB ? doubleValueB : Integer.MAX_VALUE);
注意,这不需要varargs。如果您想使用如上所述的可变长度参数列表,您需要自己的带有varargs的min函数。如果您使用的是三元运算符,则需要一个false条件。假设您希望确保如果boolA为false,则doubleValueB将为最小值,而如果boolB为false,则doubleValueA将为最小值。您可以将其他条件设置为最大整数,然后就是这种情况 当然,如果boolA和boolB都为false,那么您的值将是最大整数值。如果这可能发生,那么您将需要额外的代码来处理它
Math.min(boolA ? doubleValueA : Integer.MAX_VALUE, boolB ? doubleValueB : Integer.MAX_VALUE);
注意,这不需要varargs。如果要使用所述的可变长度参数列表,则需要使用自己的带有varargs的最小函数。如果boolA
或boolB
为false,则使用默认值(例如Double.MAX_值):
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
ArrayList myArray=new ArrayList();
if(boolA)myArray.add(doubleValueA);
if(boolB)myArray.add(doubleValueB);
//等
双最小值=双最大值;//从可能的最大值开始
//循环并替换为任何较小的值
for(双val:myArray)
如果(val
编辑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;
}
public double MyMin(double…myArray){
double minValue=double.MAX_VALUE;//从可能的最大值开始
//循环并替换为任何较小的值
for(双val:myArray)
如果(val
如果boolA
或boolB
为false,则使用默认值(例如Double.MAX_值):
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
ArrayList myArray=new ArrayList();
if(boolA)myArray.add(doubleValueA);
if(boolB)myArray.add(doubleValueB);
//等
双最小值=双最大值;//从可能的最大值开始
//循环并替换为任何较小的值
for(双val:myArray)
如果(val
编辑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;
}
public double MyMin(double…myArray){
double minValue=double.MAX_VALUE;//从可能的最大值开始
//循环并替换为任何较小的值
for(双val:myArray)
如果(val
java没有类似运算符的
boolA ? doubleValueA
但支持
这意味着如果boolA
为真,则使用doubleValueA
否则使用defaultValue
。否则
Math.min(boolA ? doubleValueA, boolB ? doubleValueB);
如果boolA
为false,则没有意义(除了特殊处理和在本例中使用null
,但Java没有)
总之,你应该改成
Math.min(boolA ? doubleValueA : defaultA, boolB ? doubleValueB : defaultB);
java没有类似于运算符的
boolA ? doubleValueA
但支持
这意味着如果boolA
为真,则使用doubleValueA
否则使用defaultValue
。否则
Math.min(boolA ? doubleValueA, boolB ? doubleValueB);
如果boolA
为false,则没有意义(除了特殊处理和在本例中使用null
,但Java没有)
总之,你应该改成
Math.min(boolA ? doubleValueA : defaultA, boolB ? doubleValueB : defaultB);
例如,如果boolA=false,您期望得到什么?例如,如果
boolA
为false,参数将是什么?我不需要担心所有布尔值都为false。如果其中一个值为false,则相应的双精度值不应是函数中的参数。@Etham:除了您正在使用的示例(Math.min
)正好包含两个参数之外。在这种情况下,不能有选择地省略参数。@mellamokb我明白了。我错误地认为Math.min函数可能有“无限”参数。例如,如果boolA=false,您期望得到什么?例如,如果boolA
为false,参数将是什么?我不需要担心所有布尔值都为false。如果其中一个值为false,则相应的双精度值不应是函数中的参数。@Etham:除了您正在使用的示例(Math.min
)正好包含两个参数之外。在这种情况下,不能有选择地省略参数。@mellamokb我明白了。我错误地认为Math.min函数可以有“无限”参数。谢谢,你的第一个命题不知怎的正是我想要的。ArrayList实现看起来很有希望,可能会用于其他pr