jm-program.github.io

Задача: “Калькулятор”

Описание:

Создайте консольное приложение “Калькулятор”. Приложение должно читать из консоли введенные пользователем арифметические операции и выводить в консоль результат их выполнения.

Требования:

  1. Калькулятор умеет выполнять операции сложения, вычитания, умножения и деления с двумя числами: a + b, a - b, a * b, a / b. Данные передаются в одну строку (смотрите пример)! Решения, в которых каждое число и арифмитеческая операция передаются с новой строки считаются неверными.
  2. Калькулятор умеет работать как с арабскими (1,2,3,4,5…), так и с римскими (I,II,III,IV,V…) числами.
  3. Калькулятор должен принимать на вход числа от 1 до 10 включительно, не более. На выходе числа не ограничиваются по величине и могут быть любыми.
  4. Калькулятор умеет работать только с целыми числами.
  5. Калькулятор умеет работать только с арабскими или римскими цифрами одновременно, при вводе пользователем строки вроде 3 + II калькулятор должен выбросить исключение и прекратить свою работу.
  6. При вводе римских чисел, ответ должен быть выведен римскими цифрами, соответственно, при вводе арабских - ответ ожидается арабскими.
  7. При вводе пользователем неподходящих чисел приложение выбрасывает исключение и завершает свою работу.
  8. При вводе пользователем строки, не соответствующей одной из вышеописанных арифметических операций, приложение выбрасывает исключение и завершает свою работу.

Пример работы программы:

Input:

1 + 2

Output:

3

Input:

VI / III

Output:

II

Принципы оценки работы:

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

Как отправить решение?

  1. Вам нужно создать собственный репозиторий на Github и добавить туда проект с решением.
  2. Ссылку на репозиторий отправьте нам на почту info@java-mentor.com с темой Тестовое задание калькулятор Java.

FAQ

Какую среду разработки мне выбрать?

Мы не ограничиваем вас в выборе, вы можете реализовать свой проект в любой удобной вам среде разработки:

Мы рекомендуем выбрать IntelliJ IDEA. Вот несколько примеров, как быстро начать с ней работу:

Я не умею работать с Git и GitHub

Что, если я не знаю Java?

  1. Начните с установки JDK c сайта ORACLE - скачать. Можете выбрать любую версию, но мы рекомендуем вам 8, либо 11. Для скачивания, необходимо зарегистрироваться на сайте ORACLE - это не займет много времени.
  2. Эти материалы помогут вам в установке и настройке JDK:
  3. Установите среду разработки (мы рекомендуем IntelliJ IDEA) и напишите свою первую маленькую программу на Java - см. вопрос выше.
  4. Посмотрите предлагаемый ниже список тем и ресурсов для изучения Java.
Вам потребуется изучить некоторый теоретический минимум для решения этой задачи:
  1. Основы синтаксиса Java, простые (примитивные) типы данных:
  2. Арифметические операции в java:
  3. Методы:
  4. Преобразование строки в число:
  5. Класс String, работа со строками:
  6. Циклы в Java:
  7. Работа с массивами:
  8. Логические операторы:
  9. Условные операторы, сравнение, switch case:
  10. Enum:
  11. Работа с консолью - ввод/вывод, классы Scanner и BufferedReader:
  12. Java и ООП:
  13. Обработка ошибок и создание своих исключений:
Помогут также следующие ресурсы:
  1. Курс CodeBasics - интерактивный курс по основам.
  2. Курс на Stepic. - большой, но немного сложный курс.
  3. HackerRank - много задачек, можно выбрать язык и уровень сложности. На английском, но переводчик вам поможет.
  4. Codewars - много задачек для практики. На английском, но переводчик вам опять поможет.
  5. Викиучебник по Java - Справочник по языку.
  6. Руководство по языку программирования Java.
  7. Отличная бесплатная книга - Яков Файн “Программирование на Java для детей, родителей, дедушек и бабушек”.
  8. Много разных плейлистов на YouTube - ищите “Java для начинающих.”
  9. Гугл - основной инструмент для поиска информации.

Я знаю другой язык программирования, но не знаю Java

  1. Side-by-side code snippets - сравнение примеров кода на разных языках. Выбираем ваш язык и Java - изучаем сходства/различия.
  2. Введение в Java - лекция Тагира Валеева.
  3. Базовый синтаксис Java - лекция Тагира Валеева.
  4. Базовый синтаксис Java - короткая заметка.

Я написал код, а мне выдает какую-то ошибку

Советы:
  1. Если не понимаете английского - пользуйтесь словарем/переводчиком.
  2. Не стесняйтесь гуглить текст ошибки.
  3. Если не работает большой кусок кода - попробуйте отладить небольшую его часть.

Хорошее видео про отладку Java-кода в IDEA.

Я не знаю, как подступиться к задаче

Если эта первая программа, которую вы пытаетесь написать - постарайтесь отработать основы на более простых задачах (см материалы выше).
Постарайтесь разбить большую задачу на маленькие подзадачи и решать их по отдельности - так гораздо проще. Или упростите задачу до варианта, который вы можете решить, а потом дорабатывайте до заданных требований.

Я не знаю, как работать с римскими числами

Воспользуйтесь преобразованием римских чисел в арабские, например онлайн тут.

Статья о Римских цифрах в Википедии.

Успехов!