我想要做的就是从文件中的数字创建一个数组...我对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] + " ");
}
}
答案 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]);
}