扫描文件中的双精度数组| Java

问题描述 投票:0回答:1

我正在尝试扫描具有双精度数组的文件。我正在使用下面的代码,但每个条目仅输出0.0。为什么会这样,我该如何解决?

Scanner scanner = new Scanner("file.txt");
double[] array = new double[256 * 256];
    for (int i = 0; i < array.length; i++) {
        if (scanner.hasNextDouble()) {
            array[i] = scanner.nextDouble();
        }
    }
System.out.println(array[0]);

我正在扫描的文件的示例是[0.22131145、0.22131145、0.22131145、0.22841525、0.22841525,....]

java file io java.util.scanner scanning
1个回答
0
投票

主要问题在于扫描程序对象的实例化。在这种情况下,您需要将File对象传递给它,而不仅仅是一个字符串。请参考官方documentation以获取建议。

第二,您需要使用while循环。 if语句仅执行一次,但是您希望扫描器在文件中有信息的同时继续查找。

第三,不要使用数组来存储值。这太冒险了,因为您需要事先知道数组的大小,这意味着您将需要循环两次,这将导致效率低下,或者您正在执行此处的硬编码。如果有人要在文件中添加或删除值,则会得到意外的结果。而是使用动态数据结构,例如List

public static void main(String[] args) throws FileNotFoundException {
    String filepath = "file.txt";
    Scanner scanner = new Scanner(new File(filepath));
    List<Double> list = new ArrayList<>();

    while (scanner.hasNextDouble()) {
        list.add(Double.valueOf(scanner.next()));
    }

    System.out.println(list.get(0));
}
© www.soinside.com 2019 - 2024. All rights reserved.