3ье задание
unknown
java
2 years ago
2.8 kB
4
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...