Метод main должен прекращать считывать строки с клавиатуры, как только введенная строка не совпадает с одной из ожидаемых(user, loser, coder, proge)
На мой взгляд прекращает, как еще можно прекратить?
Для каждой корректной(user, loser, coder, proger) введенной строки должен быть вызван метод doWork с соответствующим объектом класса Person в качестве параметра
Вызывается. Уже много времени потратил на это, помогите.
package com.javarush.task.task14.task1411;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/*
User, Loser, Coder and Proger
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Person person = null;
String key = null;
//ArrayList<String> list = new ArrayList<String>();
String[] arr = { "User", "Loser", "Coder", "Proger" };
Set<String> set = new HashSet<>(Arrays.asList(arr));
//hile (true) {
// key = reader.readLine();
// if(!set.contains(key)) break;
// list.add(key);
//
//or(String keys : list){
// if (keys.equals("User")) doWork(new Person.User());
// else if (keys.equals("Loser")) doWork(new Person.Loser());
// else if (keys.equals("Coder")) doWork(new Person.Coder());
// else if (keys.equals("Proger")) doWork(new Person.Proger());
//}
while(true){
key = reader.readLine();
if(!set.contains(key)) break;
if (key.equals("User")) doWork(new Person.User());
else if (key.equals("Loser")) doWork(new Person.Loser());
else if (key.equals("Coder")) doWork(new Person.Coder());
else if (key.equals("Proger")) doWork(new Person.Proger());
}
}
public static void doWork(Person person) {
if(person instanceof Person.User) ((Person.User) person).live();
else if (person instanceof Person.Loser) ((Person.Loser) person).doNothing();
else if (person instanceof Person.Coder) ((Person.Coder) person).coding();
else if (person instanceof Person.Proger) ((Person.Proger) person).enjoy();
}
}