package com.codegym.task.task14.task1411;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
/*
User, loser, coder and programmer
*/
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;
String[] array = new String[]{"user", "loser", "coder", "programmer"};
// Here's the loop for reading the keys. Item 1
while(true)
{
int i;
if(reader.readLine() != array[i])
break;
else
key = reader.readLine();
// Create an object. Item 2
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
person = new Person.Programmer();
doWork(person); // Call doWork
}
}
public static void doWork(Person person) {
// Item 3
if(person instanceof Person.User)
person.live();
else if(person instanceof Person.Loser)
person.doNothing();
else if(person instanceof Person.Coder)
person.writeCode();
else if(person instanceof Person.Programmer)
person.enjoy();
}
}
Please suggest what's wrong in my code? doWork() method cannot find methods live(), doNothing() and others from Person class.
Under discussion
Comments (1)
- Popular
- New
- Old
You must be signed in to leave a comment
Learner
9 October 2018, 09:40
1. Try type casting person object in each case. For example: ((Person.User) person).live();
2. In this statement if(reader.readLine() != array[i])
What is the value of i?
+2