我正在将文本文件读入二维数组。第一列(我正在排序的那一列)几乎都是 double 。大家可能都知道,它排序为 1.1 1.6 25.6 6.4,我该如何解决这个问题?
import java.io.*;
import java.util.*;
public class Sort {
public static void main(final String[] args) throws FileNotFoundException {
FileOutputStream out = new FileOutputStream("/Users/evanlivingston/2d.txt");
PrintStream pout = new PrintStream(out);
List<String[]> entries = new ArrayList<String[]>();
Scanner sc = new Scanner(new File("/Users/evanlivingston/dists/0.txt"));
while (sc.hasNext()) {
entries.add(new String[] { sc.next(), sc.next()});
}
String[][] table = entries.toArray(new String[0][]);
Arrays.sort(table, new Comparator<String[]>() {
@Override
public int compare(String[] s1, String[] s2) {
String t1 = s1[0];
String t2 = s2[0];
return t1.compareTo(t2);
}
});
pout.print(java.util.Arrays.deepToString(table));
pout.close();
}
}
编辑:
这是我更新的代码。它不会编译。
import java.io.*;
import java.util.*;
public class Sort {
public static void main(String[] args) throws FileNotFoundException {
FileOutputStream out = new FileOutputStream("/Users/evanlivingston/2d.txt");
PrintStream pout = new PrintStream(out);
List<Coords> coords = new ArrayList<Coords>();
{
Scanner sc = new Scanner(new File("/Users/evanlivingston/dists/0.txt"));
while(sc.hasNextLine()) {
String[] numstrs = sc.nextLine().split("\\s+");
}
String[][] table = coords.toArray(new String[0][]);
Arrays.sort(table, new Comparator<Double[]>() {
@Override
public int compare(Double[] s1, Double[] s2) {
double a = Double.parseDouble(s1);
double b = Double.parseDouble(s2);
compare(a, b);
}
});
pout.print(java.util.Arrays.deepToString(table));
pout.close();
}
}
}
最佳答案
在数组 NOT Strings 中存储 double 值。
因此,当您从文件中读取字符串时,将其转换为 double 。或者使用 Scanner.nextDouble() 方法为您执行此操作。
您不希望每次调用比较器时都转换字符串。
关于java - 使用 double Java 对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5751897/