2012-04-09 47 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