Задача: “Калькулятор”
Описание:
Создай консольное приложение “Калькулятор”.
Приложение должно читать из консоли введенные пользователем арифметические операции и выводить в консоль результат их выполнения.
Требования:
- Калькулятор умеет выполнять операции сложения, вычитания, умножения и деления с двумя числами:
a + b, a - b, a * b, a / b. Данные передаются в одну строку (смотри пример)! Решения, в которых каждое число и арифмитеческая операция передаются с новой строки считаются неверными.
- Калькулятор умеет работать как с арабскими (1,2,3,4,5…), так и с римскими (I,II,III,IV,V…) числами.
- Калькулятор должен принимать на вход числа от 1 до 10 включительно, не более. На выходе числа не ограничиваются по величине и могут быть любыми.
- Калькулятор умеет работать только с целыми числами.
- Калькулятор умеет работать только с арабскими или римскими цифрами одновременно, при вводе пользователем строки вроде 3 + II калькулятор должен выбросить исключение и прекратить свою работу.
- При вводе римских чисел, ответ должен быть выведен римскими цифрами, соответственно, при вводе арабских - ответ ожидается арабскими.
- При вводе пользователем неподходящих чисел приложение выбрасывает исключение и завершает свою работу.
- При вводе пользователем строки, не соответствующей одной из вышеописанных арифметических операций, приложение выбрасывает исключение и завершает свою работу.
- Результатом операции деления является целое число, остаток отбрасывается.
- Результатом работы калькулятора с арабскими числами могут быть отрицательные числа и ноль. Результатом работы калькулятора с римскими числами могут быть только положительные числа, если результат работы меньше единицы, выбрасывается исключение
Пример работы программы:
1 + 2
Output:
3
VI / III
Output:
II
I - II
Output:
throws Exception //т.к. в римской системе нет отрицательных чисел
I + 1
Output:
throws Exception //т.к. используются одновременно разные системы счисления
1
Output:
throws Exception //т.к. строка не является математической операцией
1 + 2 + 3
Output:
throws Exception //т.к. формат математической операции не удовлетворяет заданию - два операнда и один оператор (+, -, /, *)
Принципы оценки работы:
Обрати внимание на принципы ООП, постарайся разбить программу на логические классы. Решения, в которых весь код программы находится в одном классе будут низко оценены. Продемонстрируй своё умение в работе с разными синтаксическими конструкциями, не забудь про исключительные ситуации, при которых выполнение программы невозможно из-за некорректных входных данных.
Как отправить решение?
- Тебе нужно создать собственный репозиторий на Github и добавить туда проект с решением.
- Ссылку на репозиторий отправь нам на почту info@java-mentor.com с темой Тестовое задание калькулятор Java.
FAQ
Что, если я не знаю Java?
- Начни с установки JDK c сайта ORACLE - скачать. Подойдет любая версия выше 8-й включительно. Обрати внимание, после выбора версии ОС перед началом загрузки необходимо создать учетную запись на сайте ORACLE.
- Эти материалы помогут вам в установке и настройке JDK:
- Установи среду разработки (мы рекомендуем IntelliJ IDEA) и напиши свою первую маленькую программу на Java.
Какую среду разработки мне выбрать?
Мы не ограничиваем тебя в выборе, ты можешь реализовать свой проект в любой удобной среде разработки:
Мы рекомендуем выбрать IntelliJ IDEA. Вот видео, показывающее как быстро начать с ней работу:
Я не умею работать с Git и GitHub
Тебе потребуется изучить некоторый теоретический минимум для решения этой задачи:
- Основы синтаксиса Java, простые (примитивные) типы данных
- Арифметические операции в java
- Методы
- Преобразование строки в число
- Класс String, работа со строками
- Циклы в Java
- Работа с массивами
- Логические операторы
- Условные операторы, сравнение, switch case
- Enum
- Работа с консолью - ввод/вывод, классы Scanner и BufferedReader
- Java и ООП
- Обработка ошибок и создание своих исключений
Помогут также следующие ресурсы:
ВНИМАНИЕ! Не нужно смотреть все видео из плейлиста, не нужно проходить курс до конца и читать всю книгу! У тебя 7 дней на решение задачи, поэтому не трать время. Сверься со списком тем выше и посмотри выборочно материалы только по этим темам! Для того, чтобы сэкономить свое время, выбери один источник из предложенных и используй его для решения ТЗ.
- Трегулов, Програмания
- Канал Алишева
- Metanit. Руководство по языку программирования Java.
- Java для начинающих. Курс
- Гугл - основной инструмент для поиска информации.
Я написал код, а мне выдает какую-то ошибку
Часто написанный с ошибками код компилируется и при запуске может выбрасывать исключения, стектрейс которых выводится в консоль. Это нормально.
Советы:
- Для понимания природы этого исключения можно прочитать java doc этого исключения, либо просто загуглив исключение по названию первого исключения и тексту ошибки.
- Если по поиску теста ошибки ничего не находится, попробуй сократить текст ошибки, удалив из него текст, относящийся к конкретно к твоему приложению (например там могут быть указаны название написанных тобой методов или переменных).
- Если не понимаешь английского - пользуйся словарем/переводчиком.
- Не стесняйся гуглить текст ошибки.
- Если не работает большой кусок кода - попробуй отладить небольшую его часть.
- Мысленно пройдись последовательно по коду, записывая значения переменных и результат работы.
Так же для отладки приложения и нахождения проблемный мест в среде разработки предсмотрен режим debug. Видео, показывающее основы использования debug режима в IntelliJ Idea смотреть
Я не знаю, как подступиться к задаче
Если эта первая программа, которую ты пытаешься написать - постарайся отработать основы на более простых задачах (см материалы выше).
Постарайся разбить большую задачу на маленькие подзадачи и решать их по отдельности - так гораздо проще. Или упрости задачу до варианта, который ты можешь решить, а потом дорабатывай до заданных требований.
Я не знаю, как работать с римскими числами
Воспользуйся преобразованием римских чисел в арабские, например онлайн тут.
Статья о Римских цифрах в Википедии.
Успехов!