从文件创建数组;获取错误:线程“main”中的异常java.util.NoSuchElementException:找不到行

时间:2017-07-25 18:06:18

标签: java arrays file

我想要做的就是从文件中的数字创建一个数组...我对java很新,所以它可能不是最有效的方法,但我现在要走的是有限的知识。

当我运行它时,我收到以下消息:

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at CreateArray.main(CreateArray.java:27)

这是我对代码的微弱尝试:

import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;

public class CreateArray
{
  public static void main(String[] args) throws IOException
  {
    File file = new File("Numbers.txt");
    Scanner inputFile = new Scanner(file);

    // Find the number of lines in the file
    int count = 0;
    while (inputFile.hasNextLine())
    {
      String str = inputFile.nextLine();
      count++;
    }

    // Create array
    double[] numbers = new double[count];

    // Add numbers to array
    String str;
    while (inputFile.hasNextLine());
    {
      for (int i = 0; i < count; i++)
      {
        str = inputFile.nextLine();
        numbers[i] = Double.parseDouble(str);
      }
    }

    // Display array
    for (int i = 0; i < numbers.length; i++)
      System.out.print(numbers[i] + " ");
  }
}

2 个答案:

答案 0 :(得分:1)

当您使用扫描仪在代码中编写inputFile.hasNextLine()时,您实际上已经从文件中读取了一行。
正如@tima所说,您在第一个while循环中完成了读取文件。试着看看java: about read txt file into array

答案 1 :(得分:1)

使用类似ArrayList的集合。在文件读取时,您不需要声明数组的大小。

File file = new File("Numbers.txt");
Scanner inputFile = new Scanner(file);
List<Double> myList = new ArrayList<Double>();

while (inputFile.hasNextLine()) {
    String str = inputFile.nextLine();
    try {
        myList.add(Double.parseDouble(str));
    } catch (NumberFormatException e) {
        // TODO: handle exception
    }
}

for (Double data : myList) {
    System.out.println(data);
}

如果您需要数组类型,请使用: -

Double data[] = new Double[myList.size()];
    myList.toArray(data);

    for (int i = 0; i < data.length; i++) {
        System.out.println(data[i]);
    }