2015-11-30 73 views
0

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

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(); 
} 

输入是:

10 6 
AACATGAAGG 
TTTTGGCCAA 
TTTGGCCAAA 
GATCAGATTT 
CCCGGGGGGA 
ATCGATGCAT 

输出我得到的是:

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在排序后是最大的。

回答

0

您按字母顺序对数组进行排序,但似乎您想对其进行数字排序。试试这个:

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; 
     } 
    }); 
相关问题