我正在尝试使用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.
基本上我正在尝试将所有数字放入双数组中,并将所有名称放入字符串数组中。有什么想法吗?
答案 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