부울 값에 따라 함수에 매개 변수를 삽입 할 수 있습니까? 사전에부울 값에 따라 매개 변수 삽입
Math.min(boolA ? doubleValueA, boolB ? doubleValueB);
감사 :
예를 들어, 나는이 코드 조각이!
부울 값에 따라 함수에 매개 변수를 삽입 할 수 있습니까? 사전에부울 값에 따라 매개 변수 삽입
Math.min(boolA ? doubleValueA, 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
삼항 연산자를 사용하는 경우 거짓 조건이 필요합니다. boolA가 false이면 doubleValueB가 min이되고 boolB가 false이면 doubleValueA가 min이되는지 확인하려고한다고 가정 해보십시오. 당신은 다른 조건을 최대 정수로 만들 수 있습니다.
물론 boolA와 boolB가 모두 false이면 값은 최대 정수 값이됩니다. 그런 일이 발생할 수 있다면,이를 처리하기 위해 추가 코드가 필요합니다. 가변 인자를 고려하지 않습니다 Math.min(int, int) 것을
는Math.min(boolA ? doubleValueA : Integer.MAX_VALUE, boolB ? doubleValueB : Integer.MAX_VALUE);
참고. 설명 된 가변 길이 인수 목록을 사용하려면 here에 varargs와 함께 min 함수가 필요합니다. 당신이 최소 찾으려 변수의 목록이있는 경우
Math.min(
(boolA) ? doubleValueA : Double.MAX_VALUE,
(boolB) ? doubleValueB : Double.MAX_VALUE
);
편집
: boolA
또는 boolB
이 false 인 경우
자바
boolA ? doubleValueA
같은 연산자를 가지고 있지만 boolA
에 해당하는 경우, 다음, 그렇지 않으면 defaultValue
를 사용 doubleValueA
를 사용하는 것을 의미한다 ternary operator
boolA ? doubleValueA : defaultValue
지원하지 않습니다. boolA
이 거짓 (특수 처리를 위해이 경우 null
로가는 제외하고 있지만, 자바는하지 않습니다)
모두 그렇지 않으면
Math.min(boolA ? doubleValueA, boolB ? doubleValueB);
가 무의미, 당신은 변경해야
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
예를 들어 무엇을 기대하십니까? boolA = false이면? – Howard
'boolA'가 false 인 경우 매개 변수는 어떻게됩니까? – mellamokb
그는 varargs를 찾고 있습니까? –