2017-01-14 1 views
1

나는 학교 과제물을 작성하는 데 문제가 있습니다. 기본적으로이 코드 조각이 나오기 전에 이미 객체 배열에 저장되어있는 많은 정보를 가지고 작업합니다. 이제이 배열을 정렬해야합니다 (정렬 된 후에는 PRIORITY 변수의 순서로 몇 가지를 계산해야합니다).변수를 기반으로 객체 배열을 다른 배열에 배열

나는 이미 MyClass [] 배열을 가지고 있는데,이 배열은 한정된 양의 MyClass 객체를 저장한다.

MyClass[] priorityArray = new MyClass[input.length]; 
for (int i=0; i<priorityArray.length; i++) { 
    int maxIndex = 0; 
    int maxPrivilege = input[i].returnPrivilege(); 
    for (int j=1; j<input.legnth; j++) { 
    int currentPrivilege = input[j].returnPrivilege(); 
    if (currentPrivilege > maxPrivilege) { 
     maxPrivilege = currentPrivilege; 
     maxIndex = j; 
    } 
    } 
    priorityArray[i] = input[maxIndex]; 
    input[maxIndex].setPrivilege(-900000000); 


} 

MyClass의 클래스 공상 아무것도 경우,하지만 물론, 적절한 생성자, getter와 setter 메소드와 정수 변수 "권한을"이 포함되어 있습니다.

프로그램의 최종 테스트에서 오류가 발생하여 프로그램에서 "-900000000"으로 권한을 반환하므로 코드의이 부분과 관련이 있어야합니다. 입력 배열의 특정 MyClass 인스턴스를 priorityArray 배열에 쓰는 것도 아닙니다.

어떻게 해결할 수 있습니까? 도움.

답변

1

전적으로 답변을 다시 작성하겠습니다. 참조로 다른 배열 한 어레이로부터 객체를 할당하는 선이

priorityArray[i] = input[maxIndex]; 

에서

. 즉, 객체가 하나 뿐이므로 그 다음 행에서 값을 -9000000으로 설정합니다. 물론 priorityArray의 요소에는 동일한 변경 사항이 적용됩니다. 이 문제를 해결하려면 여기에 개체를 복제해야합니다.

+0

잘 모르겠습니다 - "j"루프가 매번 전체 "입력"배열을 통과하기를 원합니다. 그래서 for 루프는 선언 할 때 maxPrivilege 변수에 input [0] .returnPrivilege()의 값을 할당하기 때문에 0에서 시작해야합니다 (1에서 시작합니다.) 또한 " 디버거 "? –

+0

감사합니다. 내 문제를 해결했습니다. 불행히도, 아직 100 % 프로젝트가 끝나지 않았지만 이제 우선 순위가 올바르게 표시됩니다. 감사합니다! –

관련 문제