java - 从文件扫描器到数组

标签 java arrays java.util.scanner

我想为这段代码寻求一些帮助。 读取文件本身并将其用作扫描仪没有问题。 我可以很容易地计算出文件中有多少个 double 。 例如,这些是 txt 文件的前五个 double 。 (这些数字应该是垂直列出的,但我毫不怀疑这会有所作为)

10 84 39 93 34

我想将这些 double 放入一个数组中,但出于某种原因,Java 没有将扫描器中的 double 放入数组中,而是只放入 0.0。

 Scanner in = new Scanner(new File("numbers.txt"));

    //This is for finding out the size of the array.
    int nums = 0;
    while(in.hasNextDouble() == true){
        nums++;
        in.nextDouble();            
    }

    double[] list = new double[nums];

    try{
        for (int i = 0; i < list.length; i++){
            list[i] = in.nextDouble();
        }
    }catch(NoSuchElementException e){
        System.out.print(e.getMessage());
    }

此代码总体上只打印“num”个 0.0,而不是将实际数字本身相加。请帮忙,谢谢。

最佳答案

问题是,在将数据添加到数组之前,您正在读取所有数据,因此当您添加时,没有数据可供读取。

几个不同的选项:

Scanner in = new Scanner(new File("numbers.txt"));
int nums = 0;
double[] list = new double[5];
while(in.hasNextDouble()){
    list[nums] = in.nextDouble();
    nums++;            
}

尝试更像上面的方法(对于固定数量的数据),在将它们添加到数组之前,您正在读取所有 double ..您不能读取所有数据,因为您只是为了看看如何你的阵列需要很大..除非你制作一个新的扫描仪来重新读取文件

注意:上面的代码假定您的文件始终只有 5 个 double ,如果情况并非如此,您可能想要使用数组列表,以便在您添加未知数量的 double 时列表可以扩展(参见下面使用数组列表的示例)

Scanner in = new Scanner(new File("numbers.txt"));
ArrayList<Double> arrayList = new ArrayList<Double>();
while(in.hasNextDouble()){
    arrayList.add(in.nextDouble());            
}

或者...在第一个 while 循环完成后,只需再次添加下面的行,您的原始代码就可以工作了。

in.close();
in = new Scanner(new File("numbers.txt"));

关于java - 从文件扫描器到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483387/

相关文章:

java - 在 eclipse 中从 .class 文件构建可执行 jar 文件

java - 调试的原理是什么?

java - java迷宫生成器中的算法错误

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

java - 简单的火星探测器示例

java - Android Studio 中的动态 ListView : Selecting random element and update list view

arrays - TableView 仅显示从 Firebase 读取的部分数据

c - 如何在 C 上更改字符串中的单个字符?

java - 通过扫描仪更新二维阵列

java - 尝试用Java逐行读取文件