bizzcuit

Solve2

Feb 13th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.ByteArrayInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.util.Stack;
  8.  
  9. public class Solve2 {
  10. public static void main(String[] args) throws IOException {
  11. testInput();
  12.  
  13. BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  14. String problem = in.readLine();
  15. problem = problem.replaceAll(" ", "");
  16. problem = problem.replaceAll("[()]", "");
  17.  
  18. Stack<Integer> integers = new Stack<>();
  19. Stack<Character> signs = new Stack<>();
  20.  
  21. String number;
  22. char sign;
  23. int i = 0;
  24.  
  25. boolean isNumber = true;
  26. for (int j = 0; j < problem.length(); j++) {
  27. if (!Character.isDigit(problem.charAt(j))) {
  28. isNumber = false;
  29. break;
  30. }
  31. }
  32.  
  33. if (isNumber) {
  34. System.out.println(problem);
  35. return;
  36. }
  37.  
  38. while (problem.contains("*") || problem.contains("+") || problem.contains("-")) {
  39. if (problem.charAt(i) == '*' || problem.charAt(i) == '+' || problem.charAt(i) == '-') {
  40. number = problem.substring(0, i);
  41. sign = problem.substring(i, i + 1).charAt(0);
  42. integers.push(Integer.parseInt(number));
  43. signs.push(sign);
  44.  
  45. problem = problem.substring(i + 1);
  46. i = 0;
  47. } else {
  48. i++;
  49. }
  50. }
  51.  
  52. long finalSum = Integer.parseInt(problem);
  53. int rotations = integers.size();
  54.  
  55. for (int j = 0; j < rotations; j++) {
  56. if (signs.peek() == '+') {
  57. finalSum += integers.pop();
  58. signs.pop();
  59. } else if (signs.peek() == '*') {
  60. finalSum *= integers.pop();
  61. signs.pop();
  62. } else if (signs.peek() == '-') {
  63. finalSum = integers.pop() - finalSum;
  64. signs.pop();
  65. }
  66. }
  67.  
  68. System.out.println(finalSum);
  69. }
  70.  
  71. private static void testInput() {
  72. String test = "546613216894946";
  73. System.setIn(new ByteArrayInputStream(test.getBytes()));
  74. }
  75. }
Add Comment
Please, Sign In to add comment