문제

나는 그것이 내 논리의 명백한 오류라고 확신하지만, 내가 잘못하고있는 일을 해결할 수없는 것 같습니다. 간단히 보안 코드의 배열 목록이 있는데, 각 보안 코드 조합 간의 상관 관계를 계산하고 싶습니다. 내 코드는 다음과 같습니다.

private void crossCorr(ArrayList<String> codes, HashMap<String, Stock> stockMap){

    // iterate through the codes list and get all the cross correlations:

    Iterator<String> itr1 = codes.iterator();
    while(itr1.hasNext()){
        String code1 = itr1.next();
System.out.println("  -----  " +code1);
        Iterator<String> itr2 = codes.iterator();
        ArrayList<Double> corrs = new ArrayList<Double>();
        HashMap<String, Double> codeCorr = new HashMap<String, Double>();
        String code2="";
        double corr=-2;
        while(itr2.hasNext()){
            code2 = itr2.next();
            Maths calcs = new Maths();      
            corr = calcs.getCorrelation(stockMap.get(code1).getRorHistory(), stockMap.get(code2).getRorHistory());
            corrs.add(corr);    // we order this list and then use this ordered list
                                // to find the codes for the stocks with the highest
                                // correlation for any given stock
            codeCorr.put(code2, corr);
            System.out.println(code1+" - "+code2+" - Correlation is "+corr);
        }
        orderCorrs(6, codeCorr, corrs, code1);
    }

}

내가 얻는 출력은 -

----- Goog
GOOG -GOOG- 상관 관계는 1.0000000000000002입니다
GOOG -YHOO- 상관 관계는 0.698623807707519입니다
GOOG -MSFT- 상관 관계는 0.7275411317567286입니다
GOOG -CSCO- 상관 관계는 0.8122979333363799입니다
GOOG -AAPL- 상관 관계는 0.8217785260604609입니다
GOOG -ADBE- 상관 관계는 0.6102679356472099입니다
GOOG- 접시 - 상관 관계는 0.64852624453125입니다
GOOG -NSOL- 상관 관계는 0.11600387177879072입니다
GOOG -SBUX- 상관 관계는 0.6694306410719489입니다
GOOG -PSFT- 상관 관계는 -0.0992182861087544입니다
GOOG -XOM- 상관 관계는 0.6728272039489009입니다
GOOG -WMT- 상관 관계는 0.4004364090315347입니다
GOOG -IBM- 상관 관계는 0.7559988282095168입니다
GOOG -JPM- 상관 관계는 0.708552536736528입니다
GOOG -DNA- 상관 관계는 0.13628949379947575입니다
GOOG -HPQ- 상관 관계는 0.7819350018750656입니다
GOOG -KO- 상관 관계는 0.5700932682157461입니다
GOOG -VZ- 상관 관계는 0.737881573641585입니다
GOOG -INTC- 상관 관계는 0.7654127298771953입니다
Goog -Spy- 상관 관계는 0.8042488406758052입니다
GOOG -PEP- 상관 관계는 0.6297924741882344입니다
GOOG -WFC- 상관 관계는 0.5064491351161948입니다
GOOG -ABT- 상관 관계는 0.238752389446595입니다
GOOG -QCOM- 상관 관계는 0.726356709262025입니다
GOOG- COP- 상관 관계는 0.570604981251932입니다
GOOG -MCD- 상관 관계는 0.5434872575410538입니다

그러나 나는 결코 얻지 못한다

YHOO- GOOG- 상관 관계는 .... 등을

나는 이것이 간단한 오류라고 확신하며 어떤 이유로 든 그것을 집어 들지 않습니다.

나는 상관 계산을 두 번 수행하고 있다는 것을 알고 있습니다.이 부분을 의도 한대로 작동하게하면이 문제를 해결할 것입니다.

더 많은 정보를 제공 해야하는지 알려주세요.

도움이 되었습니까?

해결책

우리가 모르는 코드에 대한 참조를 제거한 빠른 테스트 응용 프로그램은 나에게 잘 작동합니다.

당신이 처리하지 않는 점검되지 않은 예외를 던질 수 있습니까? 짧은 글을 게시 할 수 있다면 완벽한 문제를 보여주는 프로그램은 엄청나게 도움이 될 것입니다. 전체 프로젝트의 사본을 가져 가서 문제없이 문제없이 다른 것을 가져갈 수 없을 때까지 비트 (예 : 하드 코딩 데이터 및 반환 값)를 제거하십시오. 그 시점에서 당신은 물론 스스로 문제를 발견했을 것입니다.

그건 그렇고, Java 1.5 이상을 사용하는 경우 반복기를 명시 적으로 사용하는 것보다 루프 용 연장을 사용하는 것이 간단합니다. 당신은 할 것입니다 :

for (String code1 : codes) {
    // ...
    for (String code2 : codes) {
        // ...
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top