2012-04-09 50 views
-1
我使用的Java

一個二維數組,我有一個int [] []數組,像這樣:Java的:排序基於第二列的值

[ 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 2012-04-09 15:43:08

+0

可能的重複[如何排序一個簡單的整數2維數組?](http://stackoverflow.com/questions/7908307/how-do-i-sort-a-simple-integer-2-dimensional-array) – 2012-04-09 15:43:22

+0

可能是一個錯字。他的原始應用程序可能會對字符排列。 – Alain 2012-04-09 15:43:45

回答

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 2012-04-09 16:00:52

+0

是的,排序很好:-) – Paaske 2012-04-09 16:02:15

+0

謝謝,謝謝,謝謝! – Sam032789 2012-04-09 16:09:03