Еще один калькулятор, но с бесконечным вводом операций.
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.function.BiFunction;
public class FunctionalCalculatorEmulator {
// Метод для инициализации операций калькулятора
private static Map initializeOperations() {
Map operations = new HashMap();
operations.put("+", (a, b) -> a + b);
operations.put("-", (a, b) -> a - b);
operations.put("*", (a, b) -> a * b);
operations.put("/", (a, b) -> b != 0 ? a / b : null); // Обработка деления на ноль
return operations;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double result = 0.0;
boolean continueCalculation = true;
// Инициализация операций
Map operations = initializeOperations();
System.out.println("Welcome to the Functional Calculator Emulator!");
System.out.println("You can perform operations: +, -, *, /");
System.out.println("Type 'exit' to stop the program.");
while (continueCalculation) {
System.out.println("Current result: " + result);
System.out.print("Enter operation (+, -, *, /) or 'exit' to quit: ");
String operation = scanner.next();
if (operation.equalsIgnoreCase("exit")) {
continueCalculation = false;
System.out.println("Exiting the calculator. Final result: " + result);
break;
}
if (!operations.containsKey(operation)) {
System.out.println("Invalid operation. Please enter +, -, *, or /.");
continue;
}
System.out.print("Enter the number: ");
if (scanner.hasNextDouble()) {
double number = scanner.nextDouble();
BiFunction func = operations.get(operation);
Double newResult = func.apply(result, number);
if (newResult == null) {
System.out.println("Error: Division by zero is not allowed.");
} else {
result = newResult;
}
} else {
System.out.println("Invalid input. Please enter a valid number.");
scanner.next(); // clear the invalid input
}
}
scanner.close();
}
}