Advertisement
Guest User

Untitled

a guest
May 19th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. package Recursion3;
  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 numbers2 {
  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. while (!stackChars.empty()) {
  16. System.out.print(stackChars.pop() + " ");
  17. }
  18. System.out.println();
  19. while (!stackNumbers.empty()) {
  20. System.out.print(stackNumbers.pop() + " ");
  21. }
  22.  
  23. }
  24.  
  25. private static Stack<Integer> stackNumbers = new Stack<>();
  26. private static Stack<Character> stackChars = new Stack<>();
  27.  
  28. private static String calculate(String input) {
  29. if (input.contains("(")) {
  30. int count = 0;
  31. StringBuilder numberStrBld = new StringBuilder();
  32. if (input.charAt(count) == '-'){
  33. numberStrBld.append(input.charAt(count));
  34. count++;
  35. }
  36. while (input.charAt(count) != '*' && input.charAt(count) != '+' && input.charAt(count) != '-') {
  37. numberStrBld.append(input.charAt(count));
  38. count++;
  39. }
  40. stackNumbers.push(Integer.parseInt(String.valueOf(numberStrBld)));
  41. stackChars.push(input.charAt(count));
  42. return calculate(input.substring(count+2));
  43. } else {
  44. int count = 0;
  45. StringBuilder numberStrBldOne = new StringBuilder();
  46. StringBuilder numberStrBldTwo = new StringBuilder();
  47. if (input.charAt(count) == '-') {
  48. numberStrBldOne.append(input.charAt(count));
  49. count++;
  50. }
  51. while (input.charAt(count) != '*' && input.charAt(count) != '+' && input.charAt(count) != '-') {
  52. numberStrBldOne.append(input.charAt(count));
  53. count++;
  54. }
  55. stackNumbers.push(Integer.parseInt(String.valueOf(numberStrBldOne)));
  56. stackChars.push(input.charAt(count));
  57.  
  58. numberStrBldOne.delete(0, numberStrBldOne.length());
  59. count++;
  60. // System.out.println(count);
  61. // System.out.println(input.charAt(count));
  62. // count++;
  63. // System.out.println(input.charAt(count));
  64. while (input.charAt(count) != '*' && input.charAt(count) != '+' && input.charAt(count) != '-' && input.charAt(count) != ')') {
  65. numberStrBldOne.append(input.charAt(count));
  66. count++;
  67. }
  68. stackNumbers.push(Integer.parseInt(String.valueOf(numberStrBldOne)));
  69. return "";
  70. }
  71. }
  72. }
  73.  
  74. // 45 + 55
  75. // 100
  76.  
  77. // 45+(24*(12+3))
  78. // 405
  79.  
  80. // 12*(35-(46*(5+15)))
  81. // -10620
  82.  
  83. // -12*(35-(-46*(5+15)))
  84. // 1910
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement