使用文件来了解制作数组Java的大小

时间:2013-11-28 04:13:41

标签: java arrays fileinputstream

我正在我的程序中输入一个文件,其中有超过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是文件中的输入数量。但是我觉得我能够使用这个数字但我确实问过我的教授

2 个答案:

答案 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是动态的,因此您无需担心修改大小。