не знаю как правильно написать условие в цикле while, что бы читал все подряд до тех пор пока не встретит что-то отличное от
"soapOpera", "cartoon", "thriller".
если записать так
while (true){
if(key=(reader.readLine().equals("soapOpera")||(key.equals("cartoon"))||(key.equals("thriller")))){
movie = MovieFactory.getMovie(key);
System.out.println(movie.getClass().getSimpleName());
}else{
MovieFactory.getMovie(key);
break;
}
то будет ругаться на if, так как должно быть булеево выражение. А если сделать его булеевым, то надо инициализировать переменную keypackage com.javarush.task.task14.task1414;
/*
MovieFactory
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Solution {
public static void main(String[] args) throws Exception {
Movie movie;
String key;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while ((key = reader.readLine()).equals("soapOpera")||(key.equals("cartoon"))||(key.equals("thriller"))) {
movie = MovieFactory.getMovie(key);
System.out.println(movie.getClass().getSimpleName());
}
/*
8 Создать переменную movie класса Movie и для каждой введенной строки(ключа):
8.1 получить объект используя MovieFactory.getMovie и присвоить его переменной movie
8.2 вывести на экран movie.getClass().getSimpleName()
*/
}
static class MovieFactory {
static Movie getMovie(String key) {
Movie movie = null;
if ("soapOpera".equals(key)) {
movie = new SoapOpera();
System.out.println("soapOpera");
} else if ("cartoon".equals(key)) {
movie = new Cartoon();
System.out.println("cartoon");
} else if ("thriller".equals(key)) {
movie = new Thriller();
System.out.println("thriller");
}
return movie;
}
}
static abstract class Movie {
}
static class SoapOpera extends Movie {
}
static class Cartoon extends Movie {
}
static class Thriller extends Movie {
}
}