从文件中读取浮点数

时间:2014-02-20 20:02:27

标签: java

如何从文件中读取浮点数?

  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);
}

2 个答案:

答案 0 :(得分:3)

  1. 逐行阅读文件。
  2. 根据空格将每一行拆分为单词。
  3. 将每个单词转换为浮动。
  4. 以下是代码:

        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