Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. import java.util.Iterator;
  2. import java.util.LinkedList;
  3. import java.util.Queue;
  4. import java.util.Stack;
  5.  
  6. public class QueueUtils {
  7.  
  8. private static int n1, n2;
  9.  
  10. public static Queue<String> build(String line) {
  11. Queue<String> data = new LinkedList<>();
  12. String[] tokens = line.split("\\s+");
  13.  
  14. for (String temp : tokens) {
  15. data.add(temp);
  16. }
  17. return data;
  18. }
  19.  
  20. public static int eval(Queue<String> line) throws Exception {
  21. int calc = 0;
  22. Stack<String> numbers = new Stack<>();
  23. Stack<String> operators = new Stack<>();
  24.  
  25. for (String node : line) {
  26. String isNumber = ".*[0-9].*";
  27.  
  28. if (node.matches(isNumber))
  29. numbers.push(node);
  30. else
  31. operators.push(node);
  32. }
  33.  
  34. n2 = Integer.parseInt(numbers.peek()); numbers.pop();
  35. if (!numbers.isEmpty()) {
  36. n1 = Integer.parseInt(numbers.peek()); numbers.pop();
  37. }
  38.  
  39. for (String oprts : operators) {
  40. switch(oprts) {
  41. case "+":
  42. calc = (n1 + n2);
  43. break;
  44. case "-":
  45. calc = (n1 - n2);
  46. break;
  47. case "*":
  48. calc = (n1 * n2);
  49. break;
  50. case "/":
  51. calc = (n1 / n2);
  52. break;
  53. }
  54. }
  55.  
  56. return operators.size() > 0 ? calc : n2;
  57. }
  58.  
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement