将数据拆分为数组

时间:2017-11-24 02:53:53

标签: java arrays

我正在尝试使用Buffered Reader从文本文件中读取数据。我正在尝试将数据拆分为两个数组,其中一个是双精度数,另一个是字符串。以下是文本文件内容:

55.6
Scholtz
85.6
Brown
74.9
Alawi
45.2
Weis
68.0
Baird
55
Baynard
68.5
Mills
65.1
Gibb
80.7
Grovner
87.6
Weaver
74.8
Kennedy
83.5
Landry.

基本上我正在尝试将所有数字放入双数组中,并将所有名称放入字符串数组中。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以从缓冲的阅读器中获取整个字符串,然后使用正则表达式来解析数字和其他数据。像\d+\.*\d这样的正则表达式应该可以解析出数字。然后像[A-Za-z]+这样的正则表达式应该得到所有的名字。然后从正则表达式中获取每组数据,并使用.split("")将它们分成各自的数组。

答案 1 :(得分:0)

试试这个:

String file = "path to file";
        double dArr[] = new double[100];
        String sArr[] = new String[100];
        int i = 0, j = 0;
        try {
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
            String line;

        while ((line = br.readLine()) != null) {
            Pattern p = Pattern.compile("([0-9]*)\\.[0-9]*"); // should start with any number of 0-9 then "." and then any number of 0-9 
            Matcher m = p.matcher(line);
            if (m.matches()) {
                dArr[i] = Double.parseDouble(line);
                i++;
            } else {
                sArr[j] = line;
                j++;
            }
        }

    } catch (IOException e) {

        e.printStackTrace();

    }

建议: 如果不确定元素数量,请尝试List而不是数组

55被视为字符串,因为它是int