2012-04-09 4 views
-1
내가 자바를 사용하고

을 기반으로 2 차원 배열을 정렬하고 내가하는 int [] [] 배열과 같이 있습니다자바 : 두 번째 열 값

[ 65][ 4] 
[108][ 47] 
[ 32][279] 
[103][ 26] 
[111][138] 
[100][ 63] 
[112][ 33] ...etc. 

내가 이상에서 최대로 정렬 할 필요가있다, 두 번째 열의 값을 기반으로합니다.

print(myArray); 
    System.out.println("=========="); 

    Arrays.sort(myArray, new Comparator<int[]>() { 
     @Override 
     public int compare(int[] int1, int[] int2) 
     { 
      Integer number1 = int1[1]; 
      Integer number2 = int2[1]; 
      return number1.compareTo(number2); 
     } 
    }); 

    print(myArray); 

내 인쇄 방법은 다음과 같습니다 : 단지 상관없이, 두 번째 시간을 인쇄하지하지 않는 것

public static void print(int[][] array) { 
    int k = 0; 
    while (array[k][0] != 0) { 
     System.out.println("[" + array[k][0] + "][" + array[k][1] + "]"); 
     k++; 
    } 
} 

나는이 웹 사이트에이 코드를 시도했다. 나는 내가 여기서 잘못하고있는 것이 확실하지 않다. 다행히도 그것은 단지 쉬운 수정 일뿐입니다.

+1

'compare (...) '메소드에서'letter1'과'letter2'는 무엇입니까? – dasblinkenlight

+0

가능한 중복 [어떻게 간단한 정수 2 차원 배열을 정렬합니까?] (http://stackoverflow.com/questions/7908307/how-do-i-sort-a-simple-integer-2-dimensional-array) –

+0

아마도 오타입니다. 그의 원래 응용 프로그램은 문자 배열을 정렬 할 가능성이 높습니다. – Alain

답변

2

인쇄 방법이 좋지 않거나 제공된 코드로 오류를 재현하기에 충분하지 않은 것 같습니다. 코드가 처음으로 인쇄되지만 ArrayIndexOutOfBoundsException이 발생합니다 (실제 문제인 경우이 오류도 발생합니다).

대신이 인쇄 방법을 사용해보십시오. 저에게 좋습니다.

public static void print(int[][] array) { 
    for (int i = 0; i < array.length; i++) { 
     System.out.println("[" + array[i][0] + "][" + array[i][1] + "]"); 
    } 
} 
+0

아, 제 인쇄 방법인지 궁금 해서요. 아시다시피, 문제는 배열을 구현할 때 텍스트의 문자 수를 알 수 없다는 것입니다. 그래서 나는 그곳에 수많은 [0] [0]이 들어가게됩니다. 나는 지금 정렬 작업을 알고 있다고 생각합니다. – Sam032789

+0

예, 정렬은 괜찮 았습니다 :-) – Paaske

+0

감사합니다. 고맙습니다, 감사합니다 !! – Sam032789

관련 문제