Advertisement
Guest User

Untitled

a guest
May 19th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. package RecursionHomework;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.Stack;
  7.  
  8. public class SolveV2 {
  9. public static void main(String[] args) throws IOException {
  10. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  11. String input = br.readLine();
  12.  
  13.  
  14. calculate(input);
  15.  
  16. while (!stackChars.isEmpty() && stackNumbers.size() != 1) {
  17. char WOW = stackChars.pop();
  18. int secondNum = stackNumbers.pop();
  19. int firstNum = stackNumbers.pop();
  20. int sum = 0;
  21. switch (WOW) {
  22. case '+':
  23. sum = firstNum + secondNum;
  24. break;
  25. case '-':
  26. sum = firstNum - secondNum;
  27. break;
  28. case '*':
  29. sum = firstNum * secondNum;
  30. break;
  31. }
  32. stackNumbers.push(sum);
  33. }
  34. System.out.println(stackNumbers.pop());
  35. // while (!stackChars.empty()) {
  36. // System.out.print(stackChars.pop() + " ");
  37. // }
  38. // System.out.println();
  39. // while (!stackNumbers.empty()) {
  40. // System.out.print(stackNumbers.pop() + " ");
  41. // }
  42.  
  43. }
  44.  
  45. private static Stack<Integer> stackNumbers = new Stack<>();
  46. private static Stack<Character> stackChars = new Stack<>();
  47.  
  48. private static String calculate(String input) {
  49. if (input.contains("(")) {
  50. int count = 0;
  51. StringBuilder numberStrBld = new StringBuilder();
  52. if (input.charAt(count) == '-'){
  53. numberStrBld.append(input.charAt(count));
  54. count++;
  55. }
  56. while (input.charAt(count) != '*' && input.charAt(count) != '+' && input.charAt(count) != '-') {
  57. numberStrBld.append(input.charAt(count));
  58. count++;
  59. }
  60. stackNumbers.push(Integer.parseInt(String.valueOf(numberStrBld)));
  61. stackChars.push(input.charAt(count));
  62. return calculate(input.substring(count+2));
  63. } else {
  64. int count = 0;
  65. StringBuilder numberStrBldOne = new StringBuilder();
  66. StringBuilder numberStrBldTwo = new StringBuilder();
  67. if (input.charAt(count) == '-') {
  68. numberStrBldOne.append(input.charAt(count));
  69. count++;
  70. }
  71. while (input.charAt(count) != '*' && input.charAt(count) != '+' && input.charAt(count) != '-') {
  72. numberStrBldOne.append(input.charAt(count));
  73. count++;
  74. }
  75. stackNumbers.push(Integer.parseInt(String.valueOf(numberStrBldOne)));
  76. stackChars.push(input.charAt(count));
  77.  
  78. numberStrBldOne.delete(0, numberStrBldOne.length());
  79. count++;
  80. // System.out.println(count);
  81. // System.out.println(input.charAt(count));
  82. // count++;
  83. // System.out.println(input.charAt(count));
  84. while (input.charAt(count) != '*' && input.charAt(count) != '+' && input.charAt(count) != '-' && input.charAt(count) != ')') {
  85. numberStrBldOne.append(input.charAt(count));
  86. count++;
  87. }
  88. stackNumbers.push(Integer.parseInt(String.valueOf(numberStrBldOne)));
  89. return "";
  90. }
  91. }
  92. }
  93.  
  94. // 45 + 55
  95. // 100
  96.  
  97. // 45+(24*(12+3))
  98. // 405
  99.  
  100. // 12*(35-(46*(5+15)))
  101. // -10620
  102.  
  103. // -12*(35-(-46*(5+15)))
  104. // 1910
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement