java中的二维数组排序

java中的二维数组排序,java,arrays,sorting,2d,comparator,Java,Arrays,Sorting,2d,Comparator,我正在学习java并尝试UVA问题。这是UVA 612。 我使用了比较器对字符串数组进行排序,但我不知道为什么值9大于所有数字。这是我的代码: public static String getSort(String str) { int SLEN = str.length(); int count = 0; for (int i = 0; i < SLEN; i++) { for (int j = i; j < SLEN; j++) {

我正在学习java并尝试UVA问题。这是UVA 612。 我使用了比较器对字符串数组进行排序,但我不知道为什么值9大于所有数字。这是我的代码:

    public static String getSort(String str) {
    int SLEN = str.length();
    int count = 0;
    for (int i = 0; i < SLEN; i++) {
        for (int j = i; j < SLEN; j++) {
            if (str.charAt(i) > str.charAt(j)) {
                count++;
            }
        }
    }
    return Integer.toString(count);
}

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    int SLEN = sc.nextInt();
    int LINE = sc.nextInt();
    String[][] table = new String[LINE][2];
    for (int i = 0; i < LINE; i++) {
        table[i][1] = sc.next();
        table[i][0] = getSort(table[i][1]);
    }

    Arrays.sort(table, new Comparator<String[]>() {
        @Override
        public int compare(final String[] entry1, final String[] entry2) {
            final String str1 = entry1[0];
            final String str2 = entry2[0];
            return str1.compareTo(str2);
        }
    });

    for (int i = 0; i < LINE; i++) {
        System.out.println(table[i][1]);
    }

    sc.close();
}
我得到的结果是:

AACATGAAGG #10
GATCAGATTT #11
ATCGATGCAT #17
TTTTGGCCAA #36
TTTGGCCAAA #37
CCCGGGGGGA #9
但预期产出是:

CCCGGGGGGA #9
AACATGAAGG #10
GATCAGATTT #11
ATCGATGCAT #17
TTTTGGCCAA #36
TTTGGCCAAA #37

哈希后面的整数是getSort()的值。我不知道为什么排序后值9是最大的。

您正在按字母顺序对数组排序,但似乎希望按数字排序。试试这个:

Arrays.sort(table, new Comparator<String[]>() {
        @Override
        public int compare(final String[] entry1, final String[] entry2) {
            int n1 = Integer.parseInt(entry1[0]);
            int n2 = Integer.parseInt(entry2[0]);
            return n1 - n2;
        }
    });
Arrays.sort(表,新的比较器(){
@凌驾
公共整数比较(最终字符串[]entry1,最终字符串[]entry2){
int n1=Integer.parseInt(entry1[0]);
int n2=Integer.parseInt(entry2[0]);
返回n1-n2;
}
});
Arrays.sort(table, new Comparator<String[]>() {
        @Override
        public int compare(final String[] entry1, final String[] entry2) {
            int n1 = Integer.parseInt(entry1[0]);
            int n2 = Integer.parseInt(entry2[0]);
            return n1 - n2;
        }
    });