JavaRush
AI Academy
new
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/почему он пишет неизвестная ошибка компиляции в строке гд...
Анна Ивашенцева
24 уровень
  • 25.12.2019
  • 549просмотров
  • 11комментариев

почему он пишет неизвестная ошибка компиляции в строке где break; ?????????????????????????????

Вопрос по задаче MovieFactory
Java Core,  4 уровень,  8 лекция
Решен


У нас есть кинофабрика, но она работает не в полную силу.
Давай расширим ее функционал по аналогии с тем, что уже есть, и добавим чтение с консоли.
Вот что тебе нужно сделать для успешного решения:

  1. Разобраться, что программа умеет делать.
  2. Все классы должны быть внутри класса Solution.
  3. Добавить классы Cartoon, Thriller.
  4. Разобраться, как мы получаем объект класса SoapOpera по ключу "soapOpera".
  5. Аналогично получению объекта SoapOpera сделать:
    • добавить в MovieFactory.getMovie получение объекта Cartoon для ключа "cartoon".
    • добавить в MovieFactory.getMovie получение объекта Thriller для ключа "thriller".
  6. Считать с консоли несколько ключей (строк).

    Важно: ввод заканчивается, как только вводится строка не совпадающая с одной из: "cartoon", "thriller", "soapOpera".

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

Требования:
  • Классы Cartoon и Thriller должны быть статическими и существовать внутри класса Solution.
  • Метод MovieFactory.getMovie должен возвращать объект типа Cartoon при передаче ему строки "cartoon" в качестве параметра.
  • Метод MovieFactory.getMovie должен возвращать объект типа Thriller при передаче ему строки "thriller" в качестве параметра.
  • Метод main должен считывать строки с клавиатуры.
  • Метод main должен прекращать считывать строки с клавиатуры, если была введена некорректная строка (не "cartoon", не "thriller" или не "soapOpera").
  • Для каждой введенной строки (в том числе для некорректной) необходимо вызвать метод MovieFactory.getMovie().
  • Для всех введенных корректных строк необходимо вывести на экран простые имена (movie.getClass().getSimpleName()) типов объектов, возвращаемых методом MovieFactory.getMovie().
....
package com.javarush.task.task14.task1414; import java.util.*; 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 s = reader.readLine(); Movie movie = null; if("cartoon".equals(s)) { movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else if("thriller".equals(s)) { movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else if("soapOpera".equals(s)) { movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else { movie = MovieFactory.getMovie(s); break; } } static class MovieFactory { static Movie getMovie(String key) { Movie movie = null; //создание объекта SoapOpera (мыльная опера) для ключа "soapOpera" if ("soapOpera".equals(key)) { movie = new SoapOpera(); } if("cartoon".equals(key)) { movie = new Cartoon(); } if("thriller".equals(key)) { movie = new Thriller(); } //напишите тут ваш код, пункты 5,6 return movie; } } static abstract class Movie { } static class SoapOpera extends Movie { } //CLASSES 1 public static class Cartoon extends Movie{ } public static class Thriller extends Movie { } }
0
Комментарии (11)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис
Уровень 17
25 декабря 2019, 10:14
break же в циклах (for, while) используется, а не в if-е :)
0
Анна Ивашенцева
Уровень 24
25 декабря 2019, 10:17
я что то перезанималась по ходу ахах ) но все равно вот так не проходит по последним трем пунктам BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String s = reader.readLine(); Movie movie = null; try { while(true) { if("cartoon".equals(s)) { movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else if("thriller".equals(s)) { movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else if("soapOpera".equals(s)) { movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else { movie = MovieFactory.getMovie(s); break; } } } catch(Exception e) { }
0
Ksenia VolkovaJava Developer в DXCMaster
25 декабря 2019, 10:19
Сколько строк ты считываешь?
0
Анна Ивашенцева
Уровень 24
25 декабря 2019, 10:20
по сути считываю 3 строки , а в четвертой строке просто вызываю метод MovieFactory.GetMovie
0
Анна Ивашенцева
Уровень 24
25 декабря 2019, 10:21
но по выводу получается какая то бредятина в бесконечный столб Cartoon (((
0
Ksenia VolkovaJava Developer в DXCMaster
25 декабря 2019, 10:22
Покажи, где в коде ты считываешь 3 строки? И сколько нужно считывать? Бесконечный столб - потому что бесконечный цикл.
0
Анна Ивашенцева
Уровень 24
25 декабря 2019, 10:25
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String s = reader.readLine(); Movie movie = null; try { while(true) { if("cartoon".equals(s)) { //1 строка movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else if("thriller".equals(s)) { 2 строка movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else if("soapOpera".equals(s)) { 3 строка movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else { это строка некорректная, но для нее нужно выполнить метод //movie = MovieFactory.getMovie(s); } break; прерываю цикл }
0
Ksenia VolkovaJava Developer в DXCMaster
25 декабря 2019, 10:27
Нет, там ты сравниваешь строку. А считываешь ты ее только один раз, еще до цикла, вот тут:
String s = reader.readLine();
0
Анна Ивашенцева
Уровень 24
25 декабря 2019, 10:28
косяк из за невнимательности , сделала как нужно в цикл , но выводит только первую строку (( while(true) { String s = reader.readLine(); if("cartoon".equals(s)) { movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else if("thriller".equals(s)) { movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else if("soapOpera".equals(s)) { movie = MovieFactory.getMovie(s); System.out.println(movie.getClass().getSimpleName()); } else { movie = MovieFactory.getMovie(s); } break; } }
0
Ksenia VolkovaJava Developer в DXCMaster
25 декабря 2019, 10:31
Конечно. Потому что у тебя break выполняется в обязательном порядке в конце итерации.
0
Анна Ивашенцева
Уровень 24
25 декабря 2019, 10:32
да , уже дошло , спасибо большое за помощь , пора поесть хихих)
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush