Не пойму что не так. Выводит
Cartoon
SoapOpera
java.lang.NullPointerException
at com.javarush.task.task14.task1414.Solution.main(Solution.java:14)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
package com.javarush.task.task14.task1414;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
MovieFactory
*/
public class Solution {
public static void main(String[] args) throws Exception {
//ввести с консоли несколько ключей (строк), пункт 7
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name;
Movie movie;
while ((name = reader.readLine()).equals("thriller") || name.equals("cartoon") || name.equals("soapOpera")) {
movie = MovieFactory.getMovie(name);
System.out.println(movie.getClass().getSimpleName());
if (!(name = reader.readLine()).equals("cartoon") || !name.equals("thriller") || !name.equals("soapOpera")) {
movie = MovieFactory.getMovie(name);
}
}
}
static class MovieFactory {
static Movie getMovie(String key) {
Movie movie = null;
//создание объекта SoapOpera (мыльная опера) для ключа "soapOpera"
if ("soapOpera".equals(key)) {
movie = new SoapOpera();
}
//напишите тут ваш код, пункты 5,6
if ("cartoon".equals(key)) {
movie = new Cartoon();
}
if ("thriller".equals(key)) {
movie = new Thriller();
}
return movie;
}
}
static abstract class Movie {
}
static class SoapOpera extends Movie {
}
//Напишите тут ваши классы, пункт 3
static class Cartoon extends Movie {
}
static class Thriller extends Movie {
}
}