Чтение информации из текстового файла для получения конкретной информации - PullRequest
0 голосов
/ 11 декабря 2018

Я работаю над заданием, в котором я должен создать интервал (который я уже выполнил) и из текстового файла, прочитать имена девочек, найденные в этом интервале, и поместить их в список массивов.Я также должен прочитать все мужские имена, которые начинаются с буквы «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 голосов
/ 11 декабря 2018

Хорошо ... вы знаете, как читать текстовые файлы (в некоторой степени), что хорошо, но вы можете немного упростить код:

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();
    }

Попробуйте с ресурсами isиспользуется здесь, чтобы ваш BufferedReader автоматически закрывался.Если все, что вы собираетесь сделать, это прочитать нужный текстовый файл, то объект Scanner , который вы закомментировали в своем коде, также является довольно хорошей альтернативой для чтения текстовых файлов при правильном использовании.

Этоиз вашего неполного кода очевидно, что каждая строка данных в этом файле имеет вид Пробел или Tab , разделенный просто на основе Регулярное выражение ("\\s+"), используемое вметод String # split () (выражение "\\s+" будет разбивать строку на любое количество пробелов и / или табуляций, содержащихся в этой строке). Обратите внимание , однако, строка кода, в которой вы используете метод String # split () , не завершена должным образом .... Если вы прочитаете связанный учебник, вы обнаружите, что этот методиспользуется для заполнения String Array , что хорошо, потому что обычно , это то, что вы хотите сделать со строками данных файла.Это, конечно, позволяет вам получить точную часть данных, желаемую из каждой строки файла данных.

Никто здесь не имеет понятия, что содержится в вашем конкретном текстовом файле данных, потому что, как и многие другие, содержимое в немочевидно, что так уж точно классифицировали этот ужин, что даже фиктивных данных не хватит.Из-за этого нет никакого способа предоставить вам точное значение индекса массива или значений , чтобы использовать его против String Array для получения желаемогоданные из каждой строки файла данных.Это хорошо, однако, так как это вы должны выяснить это, и как только вы это сделаете, задача будет побеждена для представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...