чтение и печать определенных строк в зависимости от пола в строке из текстового файла (Java) - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь выделить определенные строки в текстовом файле и распечатать их отдельно в зависимости от пола человека в текстовом файле.В этом порядке указаны идентификатор, имя, пол и возраст.

Пример строки из текстового файла (мужской): 1 John m 18
Пример строки из текстового файла (женский): 3 Susan f 21

Это код, который у меня есть.

import java.util.*;
import java.io.*;



class person {
String id;
String name;
String gender;
int age;
  }

public class arrayList3 {

 public static void main(String[] args) throws FileNotFoundException {

    Scanner input = new Scanner(new File("student.txt"));
    ArrayList<person> studentList = new ArrayList<>(); //all types

    while(input.hasNextLine()) {
        person p = new person();
        p.id = input.next();
        p.name = input.next();
        p.gender = input.next();
        p.age = input.nextInt();
        studentList.add(p);
      }
   //prints list of female students
   System.out.println("== Female Student List ==");
    for (int k = 0; k < studentList.size(); k++){
        if(studentList.contains("f")){

            System.out.println(studentList.get(k).id +" "+ studentList.get(k).name +" "+ studentList.get(k).gender +" "+ studentList.get(k).age);
        }

    } 
   System.out.println();

   //prints list of male students
   System.out.println("== Male Student List ==");
    for (int k = 0; k < studentList.size(); k++){

        System.out.println(studentList.get(k).id +" "+ studentList.get(k).name +" "+ studentList.get(k).gender +" "+ studentList.get(k).age);

    } 
    input.close();
}


}

Я пытался использовать оператор if для списка учениц, но он ничего не печатает.Для списка учеников-мужчин он просто печатает весь текстовый файл, а не просто печатает учеников-мужчин.

1 Ответ

0 голосов
/ 19 сентября 2018

Sean,

Ваш цикл for содержит следующую строку:

if(studentList.contains("f")){

Но studentList определяется следующим образом:

ArrayList<person> studentList = new ArrayList<>();

Ваше приведенное выше выражение if никогда не должнооцените как true, потому что "f" является строкой, и это не тот же тип, что и содержимое списка.

Предполагая, что person.gender из "f" - это то, что вы пытаетесь отфильтровать,Простейшим изменением вашей программы было бы заменить приведенное выше выражение if на:

if("f".equals(studentList.get(k).gender)){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...