如何从文件中读取浮点数?
0.00000E+00 2.12863E-01
1.00000E-02 2.16248E-01
2.00000E-02 2.19634E-01
在第一列数字之前和数字之间的2个空格中的文件。我有错误:
s = new Scanner(new File("P0"));
while (s.hasNext()) {
float x = s.nextFloat();
float y = s.nextFloat();
System.out.println("x = " + x + ", y = " + y);
}
答案 0 :(得分:3)
以下是代码:
BufferedReader reader = null;
try {
// use buffered reader to read line by line
reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File(
"<FULL_FILE_PATH>"))));
float x, y;
String line = null;
String[] numbers = null;
// read line by line till end of file
while ((line = reader.readLine()) != null) {
// split each line based on regular expression having
// "any digit followed by one or more spaces".
numbers = line.split("\\d\\s+");
x = Float.valueOf(numbers[0].trim());
y = Float.valueOf(numbers[1].trim());
System.out.println("x:" + x + " y:" + y);
}
} catch (IOException e) {
System.err.println("Exception:" + e.toString());
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
System.err.println("Exception:" + e.toString());
}
}
}
答案 1 :(得分:1)
所以,我理解我的错误。我需要使用
s.useLocale(Locale.US);
因为扫描仪互相干扰&#34;。&#34;作为小数点分隔符,在我的语言环境中(默认)它是&#34;,&#34;。另请注意,nextDouble
可识别1.1和3(整数)//根据this link