Задать вопрос
@turdubekov
Студент

Как написать калькулятор который умеет работать с римскими цифрами?

Привет!
Есть задание: написать калькулятор
* Калькулятор умеет работать с арабскими и римскими числами
* должен принимать на вход числа от 1 до 10 включительно, не более
* Калькулятор умеет работать только с целыми числами
Мой говно "code"
import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        RomeNumbers rome = new RomeNumbers();
        int value1 = 0;
        int value2 = 0;
        String operation = null;

        System.out.println("Введите 2  целых числа: ");
        Scanner scanner = new Scanner(System.in);
        if (value1 > 0 || value1 < 10) {
            value1 = scanner.nextInt();
            operation = scanner.next();
            value2 = scanner.nextInt();
        }
        if (operation.equals("+")) {
            System.out.println(value1 + value2);
        }

        if (operation.equals("-")) {
            System.out.println(value1 - value2);
        }

        if (operation.equals("*")){
            System.out.println( value1 * value2);
        }

        if (operation.equals("/")){
            System.out.println(value1 / value2);
        }
        else {
            System.out.println("error!");
        }

    }
}

public class RomeNumbers {
    int I = 1;
    int II = 2;
    int III = 3;
    int IV = 4;
    int V = 5;
    int VI = 6;
    int VII = 7;
    int VIII = 8;
    int IX = 9;
    int X = 10;


}

Вопрос: Как быть с римскими числами и как вообще это все сделать по человечески?
  • Вопрос задан
  • 16730 просмотров
Подписаться 3 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
irishmann
@irishmann
Научись пользоваться дебаггером
В твоем классе не учитываются L, C, D, M. Тебе нужно сначала перевести в арабские цифры, произвести операцию, затем результат переводить обратно в римские цифры. Вот тут посмотри.
Ответ написан
Комментировать
@EmelyanovKonstantin
GIS архитектура, аналитика, разработка
L, C, D, M не надо на вход. Только на выход.
* должен принимать на вход числа от 1 до 10 включительно, не более

Получайте входную строку как String
String value1;
Сканер должен ждать тогда не .nextInt();, а nextLine(); чтобы прочитать строку.
А потом парсите его по вашим правилам:
int num1 = toArabic(value1);
.....
public int toArabic(String value){

   if(value.equals("I") return 1;
   if(value.equals("II") return 2;
   и т.д.

}
Ответ написан
@Bonce
Уже был такой вопрос недавно. Поищи на тостере. Там готовый код скидывали.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы