JAVA:读取.txt文件并将双精度数存储到数组

时间:2015-05-12 15:49:52

标签: java arrays file loops

我已经拥有以下代码,只要附加双打即可。

Scanner sc1 = new Scanner(System.in);

try {

    System.out.println("Enter filename:");
    String name = sc1.nextLine();//determines name of file
    File file = new File(name);//creates above file     
    FileReader fileReader = new FileReader(file);//file is read 
    BufferedReader bufferedReader = new BufferedReader(fileReader );//BufferReader reads file, line by line
    StringBuffer stringBuffer = new StringBuffer();//appended to StringBuffer
    String line;//reads each 

    while ((line = bufferedReader.readLine()) != null) 
    {
        stringBuffer.append(line + "\n");           
    }

    fileReader.close();
    System.out.println("Contents of file:");
    System.out.println(stringBuffer.toString());

    } 

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

代码读取每行都有一个double的文件

例如:

1

2

3

4

5

...

如何将这些双打中的每一个存储到数组中?

4 个答案:

答案 0 :(得分:2)

您可以使用ArrayList:

ArrayList<Double> doubles = new ArrayList<Double>();
while ((line = bufferedReader.readLine()) != null) 
{
    doubles.add(Double.parseDouble(line));        
}

答案 1 :(得分:2)

如果您想坚持只使用Array,请将StringBuffer转换为String [],如下所示:

    String [] stringArray = stringBuffer.split("\n");  

然后将字符串数组转换为double数组:

    Double [] doubleArray = new Double[stringArray.size];
    for(int i=0 : i < stringArray.size : i++){  
        doubleArray[i] = Doube.parseDouble(stringArray[i]);  
    }

如果必须使用StringBuffer,可以通过StringTokenizer类分成数组 或者,您可以使用String而不是StringBuffer,然后split()方法将使用de-limiter。

答案 2 :(得分:1)

基本解决方案

    ArrayList<Double> doubles = new ArrayList<>();
    while ((line = bufferedReader.readLine()) != null)
    {
        stringBuffer.append(line + "\n");
        try{
            double value = Double.parseDouble(line );
            doubles.add(value);
        } catch(NullPointerException e){
            //null string
        } catch(NumberFormatException e){
            //no parsable on the current line
        }
    }

答案 3 :(得分:0)

我没有遇到问题......只需创建一个数组,在读取文件时存储该行的内容。