Который вечер бьюсь друзья- не могу вывести нужный person в метод -чтобы не в бесконечном цикле вывод шел :-) Хотел сделать красиво: заметил, что в самом начале Person person =null . То есть уже есть, нулевый. Рассуждал так: Делаем блок бесконечного ввода, при вводе ключевых слов -создается объект и присваивается персону. Например так:
person = new Person.Loser();
Ну и по моей логике -тот самый, который в начале person- имеет сейчас значение
Person.Loser().
Соответственно, осталось только его передать в метод и дело в шляпе:
doWork(person);
Ан нет! Чего то на работат:-) Программа долго думает и выдает что "слишком большое время ожидания". Поможайте :-) Сам код:
package com.javarush.task.task14.task1411;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

/*
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  = reader.readLine();

         //тут цикл по чтению ключей, пункт 1


            while (true)

        if (key.equals("user"))
        {
            person = new Person.User();
        }

        else if (key.equals("loser"))
        {
            person = new Person.Loser();

        }

        else if (key.equals("coder"))
        {
            person = new Person.Coder();

        }


        else if (key.equals("proger"))
        {
            person = new Person.Proger();

        }

        else
        {
            break;
        }

        //создаем объект, пункт 2



      //вызываем doWork
        doWork(person);



    }

    public static Object Persongetter(Person person)
    {


        return person;
    }


    public static void doWork(Person person)
    {
        // пункт 3
        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();
        }


    }



}