![]()
![]()
![]()
![]()
![]()
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;
}
}