我正在我的程序中输入一个文件,其中有超过4000行。
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class NameApp{
public static void main(String[] args) throws FileNotFoundException{
String[] nameArray;
readNamesFile(nameArray);
for (int i = 0; i < 4429; i++){
System.out.println(nameArray[i]);
}
}
private static void readNamesFile(String[] nameArray) throws FileNotFoundException{
Scanner inputStream = null;
String fileName = "names.txt";
inputStream = new Scanner (new File(fileName));
int i = 0;
while (inputStream.hasNextLine()){
nameArray[i] = inputStream.nextLine();
i++;
}
inputStream.close();
}
}
现在它的工作方式不起作用,因为我的nameArray还没有被初始化。有没有办法可以使用我输入的文本文件的长度来使我的数组大小?或者,最好找出我将拥有的最大输入总数(this&lt; - 顺便说一句是我的文件)。 4429是文件中的输入数量。但是我觉得我能够使用这个数字但我确实问过我的教授
答案 0 :(得分:0)
您的方法签名不正确。您应该返回String[]
。尝试,
static String[] readNamesFile() {
String[] nameArray= new String[4429];
//put the file String here
...........
return nameArray;
}
在main
方法中,获取返回数组并打印
public static void main(String[] args) throws FileNotFoundException{
String[] nameArray= readNamesFile();
for (int i = 0; i < 4429; i++){
System.out.println(nameArray[i]);
}
}
答案 1 :(得分:0)
您可以使用LineNumberReader
。
LineNumberReader lnr = new LineNumberReader(new FileReader(new File("names.txt"))); // Your file name
lnr.skip(Long.MAX_VALUE);
int size = lnr.getLineNumber() + 1; // +1 because line numbering begins at 0
lnr.close();
// Use the size for your array declarationg
String[] nameArray = new String[size];
注意:要知道大小,必须读取文件两次(如果您坚持使用数组),可以通过手动循环或让内置类执行此操作。否则,您可以使用ArrayList
而不是数组,因为ArrayList
是动态的,因此您无需担心修改大小。