Который вечер бьюсь друзья- не могу вывести нужный 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();
}
}
}
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();
}
}
}