Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayDeque;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Scanner;
- public class Labb {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- String[] input = scan.nextLine().split(" ");
- ArrayDeque<String> operators = new ArrayDeque<>();
- ArrayDeque<String> expression = new ArrayDeque<>();
- Map<String,Integer> priorites = new HashMap<>();
- priorites.put("*", 3);
- priorites.put("/", 3);
- priorites.put("+", 2);
- priorites.put("-", 2);
- priorites.put("(", 1);
- for (String anInput : input) {
- try {
- double num = Double.parseDouble(anInput);
- expression.addLast(anInput);
- } catch (Exception e) {
- switch (anInput) {
- case "x":
- expression.addLast(anInput);
- break;
- case "(":
- operators.push(anInput);
- break;
- case ")":
- String symbol = operators.pop();
- while (!symbol.equals("(")) {
- expression.addLast(symbol);
- symbol = operators.pop();
- }
- break;
- default:
- while (!operators.isEmpty() && priorites.get(operators.peek()) >= priorites.get(anInput)) {
- expression.addLast(operators.pop());
- }
- operators.push(anInput);
- break;
- }
- }
- }
- while (!operators.isEmpty()) {
- expression.addLast(operators.pop());
- }
- while (expression.size() > 0) {
- System.out.print(expression.pop()+" ");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement