Java 如何将.txt文件中的double读入ArrayList

Java 如何将.txt文件中的double读入ArrayList,java,arraylist,java.util.scanner,Java,Arraylist,Java.util.scanner,我试图从一个包含100000个double的文件中读取double,这些double以两个double的行排列,每个double之间用空格隔开。像这样: 2.54343 5.67478 1.23414 5.43245 7.64748 4.25536 ... 到目前为止,我的代码是: Scanner numFile = new Scanner(new File("input100K.txt").getAbsolutePath()); ArrayList<Double> list =

我试图从一个包含100000个double的文件中读取double,这些double以两个double的行排列,每个double之间用空格隔开。像这样:

2.54343 5.67478
1.23414 5.43245
7.64748 4.25536
...
到目前为止,我的代码是:

Scanner numFile = new Scanner(new File("input100K.txt").getAbsolutePath());
ArrayList<Double> list = new ArrayList<Double>();
while (numFile.hasNextLine()) {
    String line = numFile.nextLine();
    Scanner sc = new Scanner(line);
    sc.useDelimiter(" ");
    while(sc.hasNextDouble()) {
        list.add(sc.nextDouble());
    }
    sc.close();
}
numFile.close();
System.out.println(list);
}
但当我运行程序时,它会给我一个FileNotFoundException。我知道该文件存在,我可以查看并打开它

input100K.txt
与程序一起位于src包文件夹中。是否有某个特定的文件必须在哪里才能工作


编辑:正如Evgeniy Dorofev所指出的,文件需要位于项目文件夹(src文件夹的父文件夹)中,程序才能找到它。

当您创建这样的扫描仪时
新建扫描仪(新文件(“input100K.txt”).getAbsolutePath()
;您正在扫描文件路径作为输入,而不是文件本身。这样做
newscanner(新文件(“input100K.txt”)

您可以尝试在刚刚阅读的行上使用
split()
方法,然后将每个部分解析为
双精度
。请注意,无需创建两个
扫描仪
s:

Scanner sc = new Scanner(new File("input100K.txt"));
sc.useDelimiter(" ");
ArrayList<Double> list = new ArrayList<Double>();

while (sc.hasNextLine()) {
    String[] parts = sc.nextLine().split(" "); // split each line by " "
    for (String s : parts) {
        list.add(Double.parseDouble(s)); // parse to double
    }
}
sc.close();

System.out.println(list);
Scanner sc=新扫描仪(新文件(“input100K.txt”);
sc.useDelimiter(“”);
ArrayList=新建ArrayList();
while(sc.hasNextLine()){
String[]parts=sc.nextLine().split(“”;//按“”拆分每行
用于(字符串s:零件){
list.add(Double.parseDouble(s));//解析为Double
}
}
sc.close();
系统输出打印项次(列表);
更换线路

Scanner numFile = new Scanner(new File("input100K.txt").getAbsolutePath());


以下是一个示例程序:

public static void main(String[] args) throws FileNotFoundException {

        List<Double> doubleList = new ArrayList<Double>();
        Scanner scanner = new Scanner(new File("/home/visruthcv/inputfile.txt"));
        while (scanner.hasNextDouble()) {

            double value = scanner.nextDouble();

            System.out.println(value);

            doubleList.add(value);

        }
        /*
         * for test print
         */
        for (Double eachValue : doubleList) {
            System.out.println(eachValue);
        }

    }
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException{
List doubleList=新的ArrayList();
Scanner Scanner=new Scanner(新文件(“/home/visruthcv/inputfile.txt”);
while(scanner.hasNextDouble()){
double value=scanner.nextDouble();
系统输出打印项次(值);
双重列表。添加(值);
}
/*
*用于测试打印
*/
for(Double-eachValue:doubleList){
System.out.println(每个值);
}
}

看起来您没有找到所需的文件。在读取文件之前,请尝试放置文件的绝对路径或打印它,以检查它是否存在。我肯定会在开头添加一个检查,以确保文件存在并且可读,这很可能就像@luigimendoza所说的,它找不到文件。这样做,我现在得到一个
FileNotFoundException
。文件应该放在我的计算机上的特定位置吗?现在,它在我的src包文件夹中,也包含该程序。请尝试将它放在project folder中,这就是问题所在。非常感谢。
Scanner numFile = new Scanner(new File("input100K.txt"));
public static void main(String[] args) throws FileNotFoundException {

        List<Double> doubleList = new ArrayList<Double>();
        Scanner scanner = new Scanner(new File("/home/visruthcv/inputfile.txt"));
        while (scanner.hasNextDouble()) {

            double value = scanner.nextDouble();

            System.out.println(value);

            doubleList.add(value);

        }
        /*
         * for test print
         */
        for (Double eachValue : doubleList) {
            System.out.println(eachValue);
        }

    }