解析小数在Java中的文本文件中以空格分隔

时间:2017-03-12 07:14:56

标签: java file parsing

我的文本文件包含以下内容:

1.56 10 998 24.87  // each separated by whitespace 

我试图解析每个小数以浮动并将它们存储在array-list中。 我正在考虑使用parseFloat方法,但很难做到这一点因为有空格。解析我的文本文件的最佳方法是什么?

4 个答案:

答案 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());