Один BufferedReader и Random на несколько классов

141
15 апреля 2022, 17:50

Пишу программу для формирования пароля и угадывания слова пользователя путём перебора случайных символов из алфавита. Пользователь определяет длину будущего пароля и задаёт своё слова для угадывания. В обоих частях программы используется BufferedReader и случайное число. Что-бы не обьявлять вышеуказанные функции каджый раз я вынесу их в отдельный класс и впоследствии буду только обращаться к ним когда необходимо.

    MainClass.java
    public static void main(String[] args){
    GetStarted(); // "ухожу" от main класса чтобы после выполнения задачи опять вернутся к новому выбору 
    }
    
   public static void GetStarted(){
    System.out.println("Выбирайте - "1" для нового пароля и "2" для угадывания слова")
    String functionNumber = new BufferedReaderClass().reader(Integer.parseInt()); // этой строкой я хочу вызывать из класса BufferedReaderClass каждый раз новый экземпляр reader-а, но скобки parseInt() подчёркивает красным 
    if(functionNumber.eqvals("1"){
    createNewPassword();
     }
    if(functionNumber.eqvals("2"){
    guessMyWord();
     }
    }

Отдельный класом прописан BufferedReader

    BufferedReaderClass.java
    public BufferedReader reader() {
    reader = new BufferedReader(new InputStreamReader(System.in));
    return reader;
     }

Несмотря на то, что я возвращаю reader мой GetStarted() не работает. И вообще есть ли смысл разделять программу на разные классы если она очень маленькая?

Answer 1

Пусть MainClass.java и BufferedReaderClass.java будут в одной папке.

Сделайте в BufferedReaderClass метод:

public BufferedReader reader() {
    return new BufferedReader(new InputStreamReader(System.in));
}

Тестовый запуск из main метода в MainClass:

String functionNumber = new BufferedReaderClass().reader().readLine();
System.out.println(functionNumber);

Но в этом виде есть ненужное создание объекта, поэтому предлагаю reader сделать статичным:

public static BufferedReader reader() {
    return new BufferedReader(new InputStreamReader(System.in));
}

А вызывать так:

String functionNumber = BufferedReaderClass.reader().readLine();
System.out.println(functionNumber);
READ ALSO
Почему Spark Core тормозит?

Почему Spark Core тормозит?

При работе только с spark sql запросы на базу обрабатываются очень быстро, но при подключении JavaPairJDD он начинает тормозить

204
Как отключить горячие клавиши в java FX

Как отключить горячие клавиши в java FX

У меня в java FX приложении при нажатии на ENTER должно выполняться определённое действие, но есть проблема: если я кликаю на какой-то Button (мышкой),...

169
JAVA регулярные выражения. Найти по шаблону слово и из этого слова извлечь "подслово" [дубликат]

JAVA регулярные выражения. Найти по шаблону слово и из этого слова извлечь "подслово" [дубликат]

ЗдраствуйтеНадо в JAVA регулярным выражением найти по шаблону слово и из этого слова извлечь "подслово"

217
Java. Как найти объект в ArrayList'е?

Java. Как найти объект в ArrayList'е?

Задание создать ArrayList с продуктами, у которых есть название, id, и количествоА затем осуществить поиск по части названия и вывести подходящие...

241