Java:将字符串解析为 double

标签 java arrays string file

我正在将一个文件读入一个数组并尝试取出数字并将它们作为 double 放入它们自己的数组中。显然我的中间名一定是“Error”。据我所知,代码没问题……至少没有什么让我感到意外的。这是它的全部荣耀。

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.*;
import java.lang.Object.*;

public class ReadFromFile {
    public static void main (String[] args){
        File file = new File("vector10.txt");
        FileInputStream fis = null;
        BufferedInputStream bis = null;
        DataInputStream dis = null;
        StringBuffer sb = new StringBuffer();
        String string = new String();

        try{
            fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);
            dis = new DataInputStream(bis);


            while((string=dis.readLine()) != null){
                sb.append(string+"\n");
            }

            fis.close();
            bis.close();
            dis.close();

            System.out.println(sb);
            String newString = sb.toString();
            System.out.println(newString);
            String[] doubles = newString.split(",");
            for (int i=0; i<doubles.length; i++){
                System.out.println(doubles[i]);
            }

            Double arrDouble[] = new Double[doubles.length];

            int idx = 0;
            for(String s : doubles) {
               arrDouble[idx++] = Double.parseDouble(s); 
            }           

        } catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

一直报错

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:412)
at java.lang.Long.parseLong(Long.java:461)
at ReadFromFile.main(ReadFromFile.java:51)

编程不一定是我的强项,看着屏幕我的眼睛开始流血。 任何想法或提示都将不胜感激。 干杯

最佳答案

如果您的文件是逗号分隔的,那么最好使用 Scanner

String doubles = "1.25,    1.65, 1.47";

Scanner f = new Scanner(doubles);
f.useLocale(Locale.US); //without this line the program wouldn't work 
                        //on machines with different locales
f.useDelimiter(",\\s*");

while (f.hasNextDouble()) {
   System.out.println(f.nextDouble());
}

关于Java:将字符串解析为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1418524/

相关文章:

java - 从 SDK 21 迁移到 SDK 28

arrays - 如何将数组作为参数传递给 shell 脚本

python - 在 Python 中从字符串转换为 boolean 值

c++ - 解析字符串,其中 "separator"可以作为数据的一部分?

python正则表达式在标点符号和字母之间插入一个空格

java - Java 的反向 ajax 库是什么?

java - 将大行写入文件

javascript - 循环遍历 react 中的项目数组

javascript - 当 $.each 和 array.splice(i) 放在一起时,JQuery 处理数组超出索引错误

Java从字符串中解析带时区的日期