3ье задание

 avatar
unknown
java
2 years ago
2.8 kB
2
Indexable
public class Calculator {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();
        System.out.println(calculator.calculate("10 + 5")); 

    public double calculate(String input) {
        String[] tokens = input.split(" ");
        if (tokens.length != 3) {
            throw new IllegalArgumentException("Неверный формат ввода");
        }

        String operand1 = tokens[0];
        String operator = tokens[1];
        String operand2 = tokens[2];

        double result;
        if (isNumeric(operand1) && isNumeric(operand2)) {
            double num1 = Double.parseDouble(operand1);
            double num2 = Double.parseDouble(operand2);
            result = performOperation(num1, operator, num2);
        } else {
            throw new IllegalArgumentException("Неверный формат чисел");
        }

        return result;
    }

    private double performOperation(double num1, String operator, double num2) {
        double result;
        switch (operator) {
            case "+":
                result = num1 + num2;
                break;
            case "-":
                result = num1 - num2;
                break;
            case "*":
                result = num1 * num2;
                break;
            case "/":
                result = num1 / num2;
                break;
            default:
                throw new IllegalArgumentException("Неподдерживаемая операция: " + operator);
        }
        return result;
    }

    public int getNumbers(double num1, double num2) {
        double sum = num1 + num2;
        return countEvenDigits(sum);
    }

    private int countEvenDigits(double number) {
        int count = 0;
        String numberString = String.valueOf((long) number);
        for (int i = 0; i < numberString.length(); i++) {
            int digit = Character.getNumericValue(numberString.charAt(i));
            if (digit % 2 == 0) {
                count++;
            }
        }
        return count;
    }

    public String getMinimalType(double number) {
        if (number >= Byte.MIN_VALUE && number <= Byte.MAX_VALUE) {
            return "Byte";
        } else if (number >= Short.MIN_VALUE && number <= Short.MAX_VALUE) {
            return "Short";
        } else if (number >= Integer.MIN_VALUE && number <= Integer.MAX_VALUE) {
            return "Int";
        } else {
            return "Long";
        }
    }

    private boolean isNumeric(String str) {
        try {
            Double.parseDouble(str);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }
}
Editor is loading...