Чтение txt файла отдельными методами

У меня есть текстовый файл, в котором я пытаюсь использовать разные методы для разделения определенного содержимого в файле и распечатать их в зависимости от того, какой метод распечатывает. В этом случае я использую разные методы для разделения стран, в которых были люди, то есть john mexico или william cuba. Я сделал два разных класса (основной и суперкласс).

Это суперкласс

import java.util.*;

public class myHashSet{


public static HashSet <String> Mexico = new HashSet<>();
public static HashSet <String> Cuba = new HashSet<>();
public static HashSet <String> Jamaica = new HashSet<>();


//only mexico
public void Mexico(){
    Mexico.removeAll(Cuba);
    Mexico.removeAll(Jamaica);

    Iterator <String> m = Mexico.iterator();
    while(m.hasNext()){
        System.out.println(m.next());
    }

}

//only cuba
public void Cuba(){
    Cuba.removeAll(Mexico);
    Cuba.removeAll(Jamaica);

    Iterator <String> m = Cuba.iterator();
    while(m.hasNext()){
        System.out.println(m.next());
    }
}

//only jamaica
public void Jamaica(){
    Jamaica.removeAll(Mexico);
    Jamaica.removeAll(Cuba);

    Iterator <String> m = Jamaica.iterator();
    while(m.hasNext()){
        System.out.println(m.next());
    }
}

//person from every country
public void orCountries(){
    Jamaica.addAll(Mexico);
    Jamaica.addAll(Cuba);

    Iterator <String> m = Jamaica.iterator();
    while(m.hasNext()){
        System.out.println(m.next());
    }
}

//people who have been to all countries
public void allCountries(){
    Jamaica.retainAll(Mexico);
    Jamaica.retainAll(Cuba);

    Iterator <String> m = Jamaica.iterator();
    while(m.hasNext()){
        System.out.println(m.next());
    }
}

//only mexico and cuba
public void MexicoandCuba(){
    Mexico.addAll(Cuba);
    Cuba.removeAll(Jamaica);

    Iterator <String> m = Mexico.iterator();
    while(m.hasNext()){
        System.out.println(m.next());
    }
}
}

Тогда это мой основной класс, который должен использовать методы из суперкласса:

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

public class people extends myHashSet{

public people(String string) throws FileNotFoundException {
    Scanner input = new Scanner(new File("people.txt"));    
    read(input);
}

public void read(Scanner input){
    while(input.hasNext()){
        String name = input.next();
        String country = input.next();
        System.out.println(name + " " + country);

    }
}

public static void main(String[] args) throws FileNotFoundException {
        people p = new people("people.txt");
        p.Mexico();
        p.Cuba();
        p.Jamaica();
        p.orCountries();
        p.allCountries();
        p.MexicoandCuba();
    }
}

Я знаю, что проблема в том, что методы в myHashSet не читают файл, и я не понимаю, что с этим делать. Любая помощь будет принята с благодарностью!

Какой результат вы получите? И какие именно методы не читают файл?

MCO 11.10.2018 01:00

Результат, который я получаю, - это просто весь текстовый файл, который представляет собой просто список людей и стран, в которых они были, рядом с их именем, например jack mexico. И все методы не читают файл, а печать файла находится в классе людей. Я просто не знаю, как заставить мои методы читать из файла people.txt.

Sean Lynch 11.10.2018 01:05

методы ничего не делают, потому что вы никогда ничего не добавляете в свои HashSets (чьи переменные должны быть в нижнем регистре, кстати)

MCO 11.10.2018 01:06

Мог бы я сделать это, поместив HashSets в каждый метод?

Sean Lynch 11.10.2018 01:12

проверьте HashSet # добавить

MCO 11.10.2018 01:17

Хм, я пытаюсь сделать .add для переменной m, но вы не можете сделать .add с итератором.

Sean Lynch 11.10.2018 01:23

Сканер # next возвращает строку.

MCO 11.10.2018 03:55
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
47
0

Другие вопросы по теме