2014-11-30 3 views
1

메신저가 만드는 게임에 대한 점수 판 만들기는하지만 버블 정렬 알고리즘을 사용하여 점수를 정렬 순서대로 정렬해야하는 점수 판을 만들어야합니다. 그러나 정렬 된 점수 목록의 해당 이름은 혼란 스러울 수 있습니다. 나는 해답을 찾았지만 그들은 sort.sort로 끝냈다. 이것은 내 자신의 정렬 알고리즘이 아니다. 올바른 이름이 옆에 인쇄되는 동안 점수를 정렬하도록 도와주세요. 지금은 스코어 보드 용 문자열 배열을 가진 정수 배열 정렬

는 말할 수 :

int[] scores={6,3,15,12}; 
String[] names={"player1","player2","player3","player4"}; 

public static void results(String [] names, int [] results) { 
    int temp; 
    boolean sorted=false; 

    while(sorted==false) { 
      sorted = true; 
    for(int i=0; i<results.length-1; i++) { 

     if(results[i] < results[i+1]) { 
      temp = results[i]; 
      results[i]=results[i+1]; 
      results[i+1] = temp; 

      sorted = false;} 
     } 

    }  
    for(int i=0; i<results.length; i++) { 
     print("In position " + (i+1) + " is " + names[i] + " with " + results[i] + " points.");}  
} 

public static void resultscalc(int [] score, int [] results) { 
    for(int i=0; i<score.length; i++) { 
     results[i] = score[i]; } 
} 
+0

지도와 같은 더 나은 데이터 구조를 사용해야합니다. 또는 이름과 점수에 대한 변수가있는 플레이어 클래스를 만든 다음 점수별로 정렬 할 수 있습니다. – csmckelvey

답변

0

정말 그런 식으로해야하는 경우 다른 임시 변수를 추가하고 결과를 바꾸는 동시에 이름에 항목을 바꿀 수 있습니다. 즉. if 문에서 처음 3 줄만 복사하면됩니다.

그러나 이름과 결과가있는 Player 클래스를 만든 다음 플레이어 배열을 정렬하는 것이 좋습니다. 인쇄 문이

if(players[i].getResult() < players[i+1].getResult()) { 
     temp = players[i]; 
     players[i]=players[i+1]; 
     players[i+1] = temp; 

     sorted = false;} 
    } 

처럼 보일 후 바로 선수 [I] .getName()겠습니까.

0

를 사용하여 객체 지향 프로그래밍. 병렬 배열을 유지하는 것은 "어렵습니다". 데이터 유형을 만드는 것이 훨씬 쉽습니다. 예를 들어 Player은 이름과 점수를 보유하고 있으며 Comparable 인터페이스를 구현하고이를 기반으로 정렬합니다 (또는 사용자 정의 정렬을 사용하여 개체의 점수 값을 정렬 할 수 있습니다).