import java.util.Scanner;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
System.out.println(calc(input));
try {
} catch (IllegalArgumentException e) {
}
}
private static int romanToNumber(String roman) {
return switch (roman) {
case "I" -> 1;
case "II" -> 2;
case "III" -> 3;
case "IV" -> 4;
case "V" -> 5;
case "VI" -> 6;
case "VII" -> 7;
case "VIII" -> 8;
case "IX" -> 9;
case "X" -> 10;
default -> -1;
};
}
private static String convertNumToRoman(int numArabian) {
String[] roman = {"O", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX",
"XXI", "XXII", "XXIII", "XXIV", "XXV", "XXVI", "XXVII", "XXVIII", "XXIX", "XXX", "XXXI", "XXXII", "XXXIII", "XXXIV", "XXXV", "XXXVI", "XXXVII", "XXXVIII", "XXXIX", "XL",
"XLI", "XLII", "XLIII", "XLIV", "XLV", "XLVI", "XLVII", "XLVIII", "XLIX", "L", "LI", "LII", "LIII", "LIV", "LV", "LVI", "LVII", "LVIII", "LIX", "LX",
"LXI", "LXII", "LXIII", "LXIV", "LXV", "LXVI", "LXVII", "LXVIII", "LXIX", "LXX", "LXXI", "LXXII", "LXXIII", "LXXIV", "LXXV", "LXXVI", "LXXVII", "LXXVIII",
"LXXIX", "LXXX", "LXXXI", "LXXXII", "LXXXIII", "LXXXIV", "LXXXV", "LXXXVI", "LXXXVII", "LXXXVIII", "LXXXIX", "XC", "XCI", "XCII", "XCIII", "XCIV", "XCV",
"XCVI", "XCVII", "XCVIII", "XCIX", "C"};
return roman[numArabian];
}
public static String calc(String input) {
String[] parts = input.split(" ");
if (parts.length != 3) {
throw new IllegalArgumentException();
}
int num1 = romanToNumber(parts[0]);
if (num1 == -1) { // Если это не римское число, пробуем парсить как арабское
try {
num1 = Integer.parseInt(parts[0]);
} catch (NumberFormatException e) {
throw new IllegalArgumentException();
}
}
int num2 = romanToNumber(parts[2]);
if (num2 == -1) { // Если это не римское число, пробуем парсить как арабское
try {
num2 = Integer.parseInt(parts[2]);
} catch (NumberFormatException e) {
throw new IllegalArgumentException();
}
}
if (num1 < 1 || num1 > 10 || num2 < 1 || num2 > 10) {
throw new IllegalArgumentException();
}
int result;
switch (parts[1]) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 == 0) {
throw new IllegalArgumentException();
}
result = num1 / num2;
break;
default:
throw new IllegalArgumentException(parts[1]);
}
return String.valueOf(result);
}
}
Anonymous #3439837
1 уровень
Калькулятор -- помогите подтянуть private static String convertNumToRoman(int numArabian) чтобы все заработало
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Стас ПасинковSoftware Developer в ZipyMaster
23 сентября 2024, 21:59
ваш метод convertNumToRoman() ніде не викликається
0
Anonymous #3439837
22 сентября 2024, 16:15
Метод умеет выполнять операции сложения, вычитания, умножения и деления с двумя числами: a + b, a - b, a * b, a / b. Данные передаются в одну строку (смотрите пример)! Решения, в которых каждое число и арифмитеческая операция передаются с новой строки считаются неверными.
Метод умеет работать как с арабскими (1,2,3,4,5…), так и с римскими (I,II,III,IV,V…) числами.
Метод должен принимать на вход числа от 1 до 10 включительно, не более. На выходе числа не ограничиваются по величине и могут быть любыми.
Метод умеет работать только с целыми числами.
Метод умеет работать только с арабскими или римскими цифрами одновременно, при вводе пользователем строки вроде 3 + II метод должен выбросить исключение и прекратить свою работу.
При вводе римских чисел, ответ должен быть выведен римскими цифрами, соответственно, при вводе арабских - ответ ожидается арабскими.
При вводе пользователем неподходящих чисел метдод выбрасывает исключение и завершает свою работу.
При вводе пользователем строки, не соответствующей одной из вышеописанных арифметических операций, метод выбрасывает исключение и завершает свою работу
Результатом операции деления является целое число, остаток отбрасывается.
Результатом работы метода с арабскими числами могут быть отрицательные числа и ноль. Результатом работы метода с римскими числами могут быть только положительные числа, если результат работы меньше единицы, выбрасывается исключение
0
Артём
22 сентября 2024, 15:50
Добавь условие задачи и код, как в других вопросах делают. Тогда, возможно, тебе помогут.
0
Anonymous #3439837
22 сентября 2024, 12:42
при вводе араб и рим цифп выводится только арабское число
0