在java中将数字的文本文件存储到数组中

时间:2013-09-23 11:55:12

标签: java arrays filereader

大家好我在以下路径C:/ Users / Marc / Downloads / vector25中有一个文本文件,其中包含以下格式的逗号分隔值

-6.08,70.93,-9.35,-86.09,-28.41,27.94,75.15,91.03,-84.21,97.84, -51.53,77.95,88.37,26.14,-23.58,-18.4,-4.62,46.52,-19.47,17.54, 85.33,52.53,27.97,10.73,-5.82,

我如何阅读此文本文件并将这些双打存储在数组中?

我目前正在考虑尝试使用缓冲读卡器,但到目前为止,答案中没有人能指出我正确的方向吗?

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Scanner;
    public class subvector {

public static void main(String[] args){

    FileReader file = null;
    try {
        file = new FileReader("C:/Users/Marc/Downloads/vector25");
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    ArrayList<Double> list = new ArrayList<Double>();
    int i=0;
    try {
        Scanner input = new Scanner(file);
        while(input.hasNext())
        {
           list.add(input.nextDouble());
           i++;
        }
        input.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
   for(double k:list){
       System.out.println(k);

   }
}

3 个答案:

答案 0 :(得分:3)

Scanner.nextDouble()默认使用空格作为分隔符。您的输入以逗号作为分隔符。在调用input.useDelimiter(",")之前,您应该使用input.hasNext()将逗号设置为分隔符。然后它应该按预期工作。

答案 1 :(得分:3)

您应该使用分隔符

Scanner input = new Scanner(file);
input.useDelimeter(",");

答案 2 :(得分:0)

我认为您的代码段不适用于指定的数据,即-6.08,70.93,-9.35,-86.09,-28.41,27.94,75.15,91.03,-84.21,97.84,-51.53,77.95,88.37,26.14, - 23.58,-18.4,-4.62,46.52,-19.47,17.54,85​​.33,52.53,27.97,10.73,-5.82,

但是你的程序可以很好地处理这些类型的数据:

19.60
63.0
635.00
896.63
47.25

我已修改您的程序并使用您的数据进行测试。它按预期工作。

public static void main(String[] args) {
    FileReader file = null;
    try {
        file = new FileReader("D:\\log4j\\vector25.txt");
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    ArrayList<Double> list = new ArrayList<Double>();
    int i=0;
    Double d= null;
    try {
        BufferedReader input = new BufferedReader(file);
        String s=null;
        while((s=input.readLine())!=null) {
            StringTokenizer st = new StringTokenizer(s,",");
            while(st.hasMoreTokens()) {
            try {
                d = Double.parseDouble(st.nextToken());
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            list.add(i, d);
        }
    }
    input.close();
} catch(Exception e) {
    e.printStackTrace();
}
for(double k:list) {
    System.out.println(k);
}
}

如果你更新了任何内容,请查看它并告诉我。

这是我在stackoverflow上的第一个POST。

谢谢,Prasad