在 java 中对二维数组进行排序
Sorting 2d array in java
我正在学习 java 并正在尝试 UVA 问题。这是 UVA 612。
我已经使用 Comparator 对我的 String 数组进行排序,但我不知道为什么值 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();
}
输入为:
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
hash后面的整数是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;
}
});
我正在学习 java 并正在尝试 UVA 问题。这是 UVA 612。 我已经使用 Comparator 对我的 String 数组进行排序,但我不知道为什么值 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();
}
输入为:
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
hash后面的整数是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;
}
});