从文件中读取双精度值

Mat*_*zyk 5 java

我正在尝试从文件中读取一些数字(双精度)并将它们存储在一个 ArrayList 和一个数组中(是的,我需要两个),代码如下:

try {
    Scanner scan = new Scanner(file).useDelimiter("\\s*\\n");

    while(scan.hasNextDouble())
    {
        tmp.add(scan.nextDouble());
    }

    Double[][] tmp2 = new Double[tmp.size()/2][2];
    int tmp3 = 0;
    for(int i = 0; i < tmp.size()/2; i++)
    {
        for(int j = 0; j < 2; j++)
        {
            tmp2[i][j] = tmp.get(tmp3);
            tmp3++;
        }
    }

} catch (FileNotFoundException e1) {
    e1.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

}

我试图阅读的文件是:

0.0 0.0
0.023 0.023
0.05 0.05
0.2 0.2
0.5 0.5
0.8 0.8
0.950 0.950
0.977 0.977
1.0 1.0
Run Code Online (Sandbox Code Playgroud)

但是我的代码不起作用,hasNextDouble() 函数没有找到任何东西,我做错了什么?

编辑:好的,所以我对源代码进行了一些编辑(从 Object[][] 更改为 Double[][])并在将它们插入到 ArrayList 后将插入值添加到数组中,但它仍然不起作用 - ' while' 循环不会执行一次。

Bil*_*ard 4

我尝试将代码减少为仅测试扫描仪本身。以下代码适用于您的数据文件:

public static void main(String[] args) {
    Scanner scan;
    File file = new File("resources\\scannertester\\data.txt");
    try {
        scan = new Scanner(file);

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

    } catch (FileNotFoundException e1) {
            e1.printStackTrace();
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到以下(预期)输出:

0.0
0.0
0.023
0.023
0.05
0.05
0.2
0.2
0.5
0.5
0.8
0.8
0.95
0.95
0.977
0.977
1.0
1.0
Run Code Online (Sandbox Code Playgroud)

尝试此操作以确保您引用了正确的文件。