import java.util.InputMismatchException; import java.util.Scanner; public class Calculator { static int number1, number2; static char operation; static int result; public static void main(String[] args) { System.out.println("Введите выражение"); Scanner scanner = new Scanner(System.in); String userInput = scanner.nextLine(); char[] chars = new char[10]; for (int i = 0; i < userInput.length(); i++) { chars[i] = userInput.charAt(i); if (chars[i] == '+') { operation = '+'; } if (chars[i] == '-') { operation = '-'; } if (chars[i] == '*') { operation = '*'; } if (chars[i] == '/') { operation = '/'; } } String charString = String.valueOf(chars); String[] box = charString.split("[-+/*]"); String stable00 = box[0]; String stable01 = box[1]; String string03 = stable01.trim(); number1 = romanToNumber(stable00); number2 = romanToNumber(string03); if (number1 < 0 && number2 < 0) { result = 0; } else { result = calculated(number1, number2, operation); String resultRoman = convertNumToRoman(result); System.out.println(resultRoman); } number1 = Integer.parseInt(stable00); number2 = Integer.parseInt(string03); if(number1 < 11 && number1 > 0 && number2 < 11 && number2 > 0) { result = calculated(number1, number2, operation); System.out.println(result); } else { System.out.println("Числа должны быть в перделах от 1 до 10 включительно."); } } 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]; } private static int romanToNumber (String roman) { try { 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 -> throw new IllegalStateException("Unexpected value: " + roman); }; } catch (InputMismatchException e) { throw new InputMismatchException("Неверный формат данных"); } } public static int calculated ( int number1, int number2, char operation){ int result = 0; switch (operation) { case '+': result = number1 + number2; break; case '-': result = number1 - number2; break; case '*': result = number1 * number2; break; case '/': try { result = number1 / number2; } catch (ArithmeticException | InputMismatchException e) { System.out.println("Exception : " + e); System.out.println("Only integer non-zero parameters allowed"); break; } break; default: throw new IllegalArgumentException("Не верный знак операции"); } return result; } }