2013-02-21 4 views
1

https://www.dropbox.com/s/5iklxvhslh4kfe7/CS%203114.zip자바 학교 프로젝트 무작위 오류

난 그냥 알아낼 수 없습니다 내 학교 프로젝트에 대한 내 코드에서 몇 가지 버그가있다. 위의 링크는 프로젝트 코드입니다. 프로젝트 지침은 P1.pdf 파일에 있습니다. 루프에 대한 두 번째는 특정 의존 반응을 업데이트 내 테이블을 사용하는 반면

   /* 
       for (int i = 0; i < reactions.length; i++) 
       { 
        reactions[i].UpdateFireTime(); 
        debugwriter.write(i + "| " + reactions[i].FireTime()); 
        debugwriter.newLine(); 
       } 
       debugwriter.newLine(); 
       heap.build(); 
       //*/ 

       //* 
       for (int i = 0; i < table[reactionIndex].length; i++) 
       { 
        int rindex = table[reactionIndex][i]; 
        reactions[rindex].UpdateFireTime(); 
       } 
       for(int i = 0; i < reactions.length; i++) 
       { 
        debugwriter.write(i + "| " + reactions[i].FireTime()); 
        debugwriter.newLine(); 
       } 
       debugwriter.newLine(); 
       heap.build(); 

       //*/ 

루프에 대한 첫 번째는, 모든 반응의 발사 시간을 업데이트 :

내 오류가이 코드를 함께 할 수있는 뭔가가. 내 대답은 첫 번째 루프에서는 맞지만 두 번째 루프에서는 잘못되었습니다. 나는 모든 반응을 발사하고 결과가 내 테이블과 일치하면 어떤 경향이 변하는지를 테스트했다. 이것은 유일한 차이점은 -Math.log (Math.random()) 인수라는 것을 의미합니다. 임의의 숫자를 상수로 설정하면 두 루프를 모두 사용하여 동일한 결과를 얻습니다. 여러 번 코드를 살펴 봤는데 문제가 무엇인지 파악할 수 없습니다. 누구든지 나를 도울 수 있습니까?

P.S. .: .ltf 파일은 매우 큰 .txt 파일입니다. 나는 DIMER의 예를 들어

올바른 수단이 정규가 .txt 파일과 구별하기 위해 .ltf를 사용 : ~ 650 ~ 650 ~ 220

편집 : 세 번째 루프는 단지 디버깅 목적을위한 것입니다. 내가 말하는 두 개의 루프는 첫 번째와 두 번째입니다. 첫 번째 것은 주석 처리 된 루프입니다.

답변

0

첫 루프에는 table[reactionIndex]이 필요하지 않습니다. table.length-1을 사용하면 i을 색인에서 자신의 자리로 사용하여 반복 할 수 있습니다.

관련 문제