2011-11-19 4 views
1

데이터 묶음을 읽는 프로그램을 여러 클래스에 넣어야하는 클래스가 있습니다. 그런 다음 정렬해야하지만 내 방법이 작동하지 않는 것 같습니다.병렬 배열을 정렬하는 데 문제가 있습니다.

내 첫 번째 for 루프 내부에는 두 가지 상황에 대한 두 개의 if 문이 있습니다. 첫 번째 상황은 팀 이름이 이전이고 두 번째는 팀 이름이 같은 경우입니다. 팀 이름이 동일하면 야드별로 정렬합니다.

이름 정렬이 잘 작동하지만 두 번째 명령문의 주석을 해제 할 때 순서를 정렬 할 수없는 순서로 정렬됩니다.

public static void sortDatabase(int numRecords, String[] teamArr, 
     int[] attemptsArr, int[] yardsArr, int[] winsArr, 
     int[] loseArr) 
{ 

    //Sort the database first according to name and then according to yards 
    System.out.println("Sort the database.\n"); 

    int iMin; 

    String teamTemp; 
    int attemptTemp; 
    int yardTemp; 
    int winsTemp; 
    int loseTemp; 

    for(int i = 0; i < numRecords - 1; i++) 
    { 
     iMin = i; 

     for(int k = i + 1; k < numRecords; k++) 
     { 
      int compare = teamArr[k].compareTo(teamArr[iMin]); 
      if(compare < 0) 
      { 
       iMin = k; 
      } 
      else if(compare == 0 && yardsArr[k] < yardsArr[iMin]) 
      {     
       iMin = k; 
      } 

      //swap out all data 
      teamTemp = teamArr[i]; 
      attemptTemp = attemptsArr[i]; 
      yardTemp = yardsArr[i]; 
      winsTemp = winsArr[i]; 
      loseTemp = loseArr[i]; 

      teamArr[i] = teamArr[iMin]; 
      attemptsArr[i] = attemptsArr[iMin]; 
      yardsArr[i] = yardsArr[iMin]; 
      winsArr[i] = winsArr[iMin]; 
      loseArr[i] = loseArr[iMin]; 

      teamArr[iMin] = teamTemp; 
      attemptsArr[iMin] = attemptTemp; 
      yardsArr[iMin] = yardTemp; 
      winsArr[iMin] = winsTemp; 
      loseArr[iMin] = loseTemp; 
     } 
    } 
} 

또한 댓글이 작업을 수행 또는 나는 새로운 클래스는 모든 데이터를 처리 할 수 ​​있도록해야한다는 말을 더 나은 방법으로 응답하지 않습니다. 그냥 사용하려고하는 정렬 방법으로 시도하고 대답하십시오. 나는 수업을 위해 이것을하고 거의 옵션이 없다. //swap out all data 필요이라는 라벨이

답변

1

비트는 대한 루프 그 안에 iMin보다는 을 설정 애프터 을 제공합니다. 지금은 iMin 설정 중간에 스왑을 수행 중이므로 iMin이 잘못되고 잘못된 요소가 바뀌게됩니다.

+0

나는 그것이 그것을 믿을 수 없다. if 문에 너무 집중했습니다. 고맙습니다. – Brandon

+0

환영합니다! – ruakh

관련 문제