2017-07-25 21 views
0

我想要做的就是从文件中的数字创建一个数组...我很新,所以它可能不是最有效的方法,但我现在要脱离有限的知识。从文件创建数组;获取错误:线程“主”java.util.NoSuchElementException异常:没有找到的行

当我运行它,我得到以下信息:

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] + " "); 
    } 
} 
+1

您的扫描仪已经达到了目的FO使用第一while循环文件,所以什么也没有第二个while循环。关闭并重新打开循环之间的文件或组合循环。 – tima

回答

1

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

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]); 
    } 
相关问题