将文本文件中的双精度数添加到数组列表中

时间:2016-05-02 21:42:58

标签: java

我有一个包含数百个双打的文本文件,全部用逗号分隔,我正在尝试编写一个方法,将每个双精度数转换为双精度数组列表。这是我的代码:

public void ReadFile(String inputfile) throws FileNotFoundException {
    File myFile = new File(inputfile);
    Scanner sc = new Scanner(myFile);
    try {
        while (sc.hasNextDouble()) {
            int i = 0;
            arraylist.add(sc.useDelimiter(","));
            i++;
        }

    } catch (Exception e) {
        System.out.println("Error");
    }
    sc.close();
}

我遇到的问题是arraylist.add(sc.useDelimiter(","))'行 我得到一个错误说“类型ArrayList中的方法add(Double)不适用于参数(Scanner)”。我不确定如何解决这个问题。有帮助吗?

2 个答案:

答案 0 :(得分:0)

您必须将useDelimiter移到循环之外。您还必须调用nextDouble来迭代文件中的数字。

   public static List<Double> readFile(String inputfile) throws FileNotFoundException{
        List<Double> arraylist = new ArrayList<Double>();
        File myFile = new File(inputfile);
        Scanner sc = new Scanner(myFile);
        sc.useDelimiter(",");
        try {
            while (sc.hasNextDouble()) {
                Double number = sc.nextDouble();
                arraylist.add(number);
            }
        }catch (Exception e) {
            System.out.println("Error");
        }
        sc.close();
        return arraylist;
    }

另外请遵循Java中适当的命名约定。方法名称应以小写字母开头。

答案 1 :(得分:0)

正如@Hovercraft所说,您需要设置一次分隔符并将其移动到初始化扫描仪的位置。它应该是这样的:

public void ReadFile(String inputfile) throws FileNotFoundException {

File myFile = new File(inputfile);
Scanner sc = new Scanner(myFile);
List<double> doublelist = new ArrayList<Double>();
//this is where you set the delimiter
sc.useDelimiter(",")
    try {
        while (sc.hasNextDouble()) {
            doublelist.add(sc.nextDouble());
        }

    } catch (Exception e) {
        System.out.println("Error");
    }
    sc.close();
}