2014-09-01 3 views

답변

2

Object 배열 (null 또는 Double 포함)이 있다고 가정합니다.

double result = 0; 
for(Object o: list){ 
    if(o instanceof Double){ 
     Double v = (Double) o; 
     result += v; 
    } 
} 
return result; 
+0

@Cephalopod 감사합니다. 편집 : –

0

는 간단하게 수행

Double sum = 0.0; 
list.removeAll(Collections.singleton(null)); 
for(Double value : list) { 
       sum = sum+value.doubleValue(); 
    } 
+0

나는 비원 수가 아닌 모든 요소의 합을 얻고 싶다고 가정합니다. 이 코드가 수행하는 것은 null이 없거나 예외가있는 목록의 합을 얻는 것입니다. – Deltharis

+1

@PhamTrung 편집의 힘, 완전히 다른 코드에 댓글을 달았습니다. – Deltharis

+0

@Deltharis 나는 볼 수 있습니다. –

0

확인이 방법 :

Double[] list = {null, 113.43, 11.5, 25.6}; 
    double result = 0; 

    for (Double element : list) { 
     if (null != element) { 
      result += element; 
     } 
    } 

참고가 Double 객체의 배열을 가지고있다. 그러나 루프에서 당신은 사용 : 논리적으로 동일

result += element; 

result = result + element; 

에 전화 할 필요가 없습니다 자바의 오토 박싱/언 박싱 기능에 따르면 element.doubleValue(); 표현한다. Java는 처리 Double 오브젝트에서 double 값을 추출하여 result 변수에 추가합니다.

1

null 항목을 발견했을 때 동작을 정의하기가 어려우므로 어떤 종류의 산술 연산을 피하는 것을 고려하십시오.

를 들어, 코드

for (Double element : list) { 
    result += element == null ? 0.0 : element; 
} 

그러나 행동이 무엇을해야을 산출 제로로 null 카운트는 을 의미하는 말을하는 분명하고 다루기 쉬운 가정을 만들 수? null은 요소 수를 계산합니까? 분산이 정의 된 방법을 결정하는 것은 여전히 ​​어렵습니다.

내가 당신이라면 주어진 배열이보다 신중하게 정의되었는지 확인해야합니다. NullPointerException을 던지면 아마도 가장 안전한 방법 일 수 있습니다.

관련 문제