Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:根据第二列的值对2D数组进行排序_Java_Arrays_Sorting - Fatal编程技术网

Java:根据第二列的值对2D数组进行排序

Java:根据第二列的值对2D数组进行排序,java,arrays,sorting,Java,Arrays,Sorting,我使用的是Java,我有一个int[][]数组,如下所示: [ 65][ 4] [108][ 47] [ 32][279] [103][ 26] [111][138] [100][ 63] [112][ 33] ...etc. 我需要根据第二列的值从最小到最大排序。我尝试了此代码,也在该网站上找到: print(myArray); System.out.println("=========="); Arrays.sort(myArray, n

我使用的是Java,我有一个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);

不管怎样,它似乎不会再打印第二次。我只是不确定我做错了什么。希望这只是一个简单的修复方法:

看起来您的打印方法不好,或者您提供的代码不足以重现您的错误。您的代码第一次打印,但随后出现ArrayIndexOutOfBoundsException,如果这是实际问题,您也应该得到它

试试这种打印方法吧,它对我很有效

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

比较中的字母1和字母2是什么。。。方法?可能是打字错误的重复。他的原始应用程序可能是对字符数组进行排序。如果无法编译,您是如何尝试提供的代码的?字母1和字母2实际上不在范围内。我想你需要1号和2号来固定字母/数字。很抱歉。阿兰是对的,它实际上是在对字符数组进行排序。第二列是文本文件中出现的次数。啊,我想知道这是否是我的打印方法。你看,问题是在数组实现时,我不知道文本中的字符数量。所以我最后也得到了一堆[0][0]。我想现在我知道分拣工作了。是的,分拣很好:-没问题!我很高兴能帮助您:-
public static void print(int[][] array) {
    for (int i = 0; i < array.length; i++) {
        System.out.println("[" + array[i][0] + "][" + array[i][1] + "]");
    }
}