Программа работает, но не проходит проверку.

package 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 {
        //ввести с консоли несколько ключей (строк), пункт 7

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String key;
        Movie movie;
        while (true) {
            key = reader.readLine();
            if ("cartoon".equals(key) || "thriller".equals(key) || "soapOpera".equals(key)) {
            //if(!key.equals("cartoon") && !key.equals("thriller") && !key.equals("soapOpera") )
            //{break;}
                movie = MovieFactory.getMovie(key);
                System.out.println(movie.getClass().getSimpleName());

            } else break;
        }

        /*
8 Создать переменную movie класса Movie и для каждой введенной строки(ключа):
8.1 получить объект используя MovieFactory.getMovie и присвоить его переменной movie
8.2 вывести на экран movie.getClass().getSimpleName()
        */

    }

    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 {
    }

}

Не проходит проверку такой пункт: "Для каждой введенной строки необходимо вызвать метод MovieFactory.getMovie". Остальные пункты проверку проходят:

  • Классы Cartoon и Thriller должны быть статическими и существовать внутри класса Solution.
  • Метод MovieFactory.getMovie должен возвращать объект типа Cartoon в случае передачи ему строки «cartoon» в качестве параметра.
  • Метод MovieFactory.getMovie должен возвращать объект типа Thriller в случае передачи ему строки «thriller» в качестве параметра
  • Метод main должен считывать строки с клавиатуры.
  • Метод main должен прекращать считывать строки с клавиатуры в случае, если была введена некорректная строка(не «cartoon», не «thriller» или не «soapOpera»).
  • Для всех введенных корректных строк необходимо вывести на экран простые имена(movie.getClass().getSimpleName()) типов объектов возвращаемых методом MovieFactory.getMovie.

задан 20 Мар, 10:15

Lich's gravatar image

Lich
925
одобрено: 24%

изменено 20 Мар, 10:17


Возможно стоит в методе getMovie() писать if{}else if{}, чтобы программа не проверяла каждое условие, а выбирала одно нужное

ссылка

опубликован 20 Мар, 11:03

EleNikIvi's gravatar image

EleNikIvi
2.0k127
одобрено: 36%

хотя всё, решил задачку. Надо было разделить вызов getMovie() и вызов метода, который возвращает имя класса, блоком if, который проверяет, ввёл ли ты cartoon, thriller или soapOpera, или ввёл что-то другое.

(20 Мар, 13:37) Lich

Хуже стало. Хуже стало, когда я условие проверки выхода из цикла кинул в самый низ цикла. И исключение вылазит, если введёшь что-то не то, и меньше пунктов проходят проверку.

(20 Мар, 13:30) Lich

8 Создать переменную movie класса Movie и для каждой введенной строки(ключа) Нужно вызывать метод даже для строки которая не подходит

(20 Мар, 13:13) EleNikIvi

нет, тоже самое. Хотя по логике вещей - правильное замечание.

(20 Мар, 11:21) Lich
Ваш ответ
включить просмотр

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×97

Задан: 20 Мар, 10:15

Просмотров: 135 раз

Отредактирован: 20 Мар, 13:37