从文本文件中读取信息以获取特定信息

时间:2018-12-10 21:58:19

标签: java text-files

我正在做一个作业,其中我必须创建一个间隔(我已经完成),并从一个文本文件中,读取在该间隔中找到的女孩名称,并将它们放入数组列表中。我还必须阅读所有以字母“ J”开头的男性名字,然后计算以字母“ J”开头的男性出生人数,并打印出该信息。以下是到目前为止的代码:

public static int generateRandomInt(int lowerLimit, int upperLimit) {
    int value = lowerLimit + (int)Math.ceil( Math.random() * ((upperLimit - lowerLimit) + 1)); //generates a random number between 1 and 10
    return value;
}// end generateRandomInt

public static void main(String[] args) {

    // Read from filename: top20namesNM1994.txt
    // Generating a interval, the lower random number comes from 50 to 100, and the upper random number comes from 150 to 200.
    // Print out this interval
    // Read all the girls names, which birth numbers are inside of the interval you construct, into a array or ArrayList.

    // Print out the array.

    //Print out all the males names, which start with letter "J".
    //Determine how many male births start with names starting with the letter "J", and print out the summary information.


    final int LOW1 = 50;
    final int LOW2 = 100;
    final int HIGH1 = 150;
    final int HIGH2 = 200;

    ArrayList<String>girlNames = new ArrayList<String>();
    String line = "";
    int interval_low = generateRandomInt(LOW1, LOW2);
    int interval_high = generateRandomInt(HIGH1, HIGH2);
    System.out.println("The interval is ( " + interval_low + " , " + interval_high + " )" );
    try {
        FileReader inputFile = new FileReader("C:\\Users\\drago\\eclipse-workspace-Ch6to7FinalExam2\\MorrisJFinalExam2\\src\\top20namesNM1994.txt");
        //Scanner scan = new Scanner (inputFile);

        BufferedReader br = new BufferedReader(inputFile);

        while((line = br.readLine()) != null) {
            line.split("\\s+");
            if()
            girlNames.add();

        }
    }

    catch(IOException e) {
        System.out.println("File not Found!");
    }
    if()
    System.out.println(girlNames.toString());
}

我坚持如何获得在创建的时间间隔内的女孩名字,以及如何读取男孩名字。附件是文本文件。  TextFile

1 个答案:

答案 0 :(得分:0)

好的...您知道如何读取文本文件(有点),这很好,但是您可以稍微简化一下代码:

ArrayList<String> girlNames = new ArrayList<>();
String filePath = "C:\\Users\\drago\\eclipse-workspace-Ch6to7FinalExam2\\"
                + "MorrisJFinalExam2\\src\\top20namesNM1994.txt"; 
String line = "";
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
        while ((line = br.readLine()) != null) {
            // ..................... 
            // ..... Your Code .....
            // .....................    
        }
    }
    catch (IOException ex) {
        ex.printStackTrace();
    }
在这里使用

Try With Resources是为了自动关闭 BufferedReader 。如果您要做的只是读取所需的文本文件,那么您在代码中注释掉的Scanner对象如果使用得当,也是读取文本文件的不错选择。

从您不完整的代码中可以明显看出,该文件中的每个数据行都是空白 Tab ,它们仅基于Regular Expression({{1 }})在String#split()方法中使用("\\s+"表达式将在字符串中包含的任意多个空格和或制表符上分割字符串)。 请注意,但是您使用String#split()方法的代码行未正确完成。...如果阅读链接的教程,您会发现此方法用于填写String Array很好,因为 通常 ,这就是您要处理的文件数据行。当然,这样做可以使您从每个数据文件行中检索所需的确切数据部分。

这里没有人知道您的特定数据文本文件中包含什么,因为与许多其他文件一样,其中的内容显然超速分类,即使是虚构的数据也无法满足要求。因此,绝对没有办法为您提供准确的数组索引值以用于您的 String Array 从每个数据文件行中检索所需的数据。但是,这很好,因为需要解决的是您,一旦完成,您就将任务打倒提交了。