Hey,
ich schaffe es leider nicht die eine fehlende Bedingung zu erfüllen ohne dass ich dabei andere schon erfüllte Conditions wieder verletze. Ich habe schon versucht in der Else Ausführung noch den Aufruf des letzten Strings mitgetMovie(), aber dann beende ich angeblich nicht das einlesen mit dem ersten unpassenden String, obwohl direkt danach das break; kommt
Danke für eure Anregungen
package de.codegym.task.task14.task1414;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
/*
Filmfabrik
*/
public class Solution {
public static void main(String[] args) throws Exception {
// Mehrere Schlüssel (Zeichenketten) von der Konsole lesen. Element 7
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> list = new ArrayList<>();
while(true){
String s = reader.readLine();
if(s.equals("cartoon")||s.equals("soapOpera")||s.equals("thriller")){
list.add(s);
}
else {break;}
}
for(String key : list){
System.out.println(MovieFactory.getMovie(key).getClass().getSimpleName());
}
/*
8. Erstelle die Variable movie in der Movie-Klasse und führe für jede eingegebene Zeichenkette (Schlüssel) folgendes durch:
8.1. Rufe mit MovieFactory.getMovie ein Objekt ab und weise es der Variable movie zu.
8.2. Zeige das Ergebnis des Aufrufs von movie.getClass().getSimpleName() an.
*/
}
static class MovieFactory {
static Movie getMovie(String key) {
Movie movie = null;
// Erstelle ein SoapOpera-Objekt für den Schlüssel „soapOpera“
if ("soapOpera".equals(key)) {
movie = new SoapOpera();
}
else if("thriller".equals(key)){
movie = new Thriller();
}
else if("cartoon".equals(key)){
movie = new Cartoon();
}
//schreib hier deinen Code. Elemente 5, 6
return movie;
}
}
static abstract class Movie {
}
static class SoapOpera extends Movie {
}
// Klassen hier schreiben. Element 3
static class Thriller extends Movie{}
static class Cartoon extends Movie{}
}