我的文本文件包含以下内容:
1.56 10 998 24.87 // each separated by whitespace
我试图解析每个小数以浮动并将它们存储在array-list中。 我正在考虑使用parseFloat方法,但很难做到这一点因为有空格。解析我的文本文件的最佳方法是什么?
答案 0 :(得分:4)
不要重新发明轮子 - 让Scanner
为你做重物:
List<Float> floats = new ArrayList<>();
try (Scanner s = new Scanner(new File("myfile.txt"))) {
while (s.hasNextFloat()) {
floats.add(s.nextFloat());
}
}
答案 1 :(得分:1)
您可以使用空格拆分String并将结果转换为Float:
public static void main(String[] args) {
try {
Scanner in = new Scanner(new FileReader("yourFile.txt"));
String str = in.nextLine();//1.56 10 998 24.87
String list[] = str.split(" ");
List<Float> listFloat = new ArrayList<>();
for (String s : list) {
listFloat.add(Float.parseFloat(s));
}
System.out.println(listFloat);
} catch (FileNotFoundException | NumberFormatException ex) {
//Exception file not found or error of parsing
}
}
<强>输出强>
[1.56, 10.0, 998.0, 24.87]
答案 2 :(得分:0)
String myString = "1.56 10 998 24.87"
String[] splitString = myString.trim().split("\\s+");
然后,您可以对String []
中的各个字符串进行解析解释代码:
myString.trim().split("\\s+");
\\ s在空格上分裂。修剪在拆分开始之前删除任何空格,这样你就不会在数组中得到“空白”字符串。
答案 3 :(得分:0)
如果你只想要字符串那么这很好
String myString = "1.56 10 998 24.87"
String[] splitString = myString.split("\\s+");
如果你想要长值的话
String myString = "1.56 10 998 24.87";
String[] splitString = myString.split("\\s+");
List<Long> longList = Arrays.asList(splitString).stream().map(Long::parseLong).collect(Collectors.toList());