Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Recursion3;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Stack;
- public class numbers2 {
- public static void main(String[] args) throws IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- String input = br.readLine();
- calculate(input);
- while (!stackChars.empty()) {
- System.out.print(stackChars.pop() + " ");
- }
- System.out.println();
- while (!stackNumbers.empty()) {
- System.out.print(stackNumbers.pop() + " ");
- }
- }
- private static Stack<Integer> stackNumbers = new Stack<>();
- private static Stack<Character> stackChars = new Stack<>();
- private static String calculate(String input) {
- if (input.contains("(")) {
- int count = 0;
- StringBuilder numberStrBld = new StringBuilder();
- if (input.charAt(count) == '-'){
- numberStrBld.append(input.charAt(count));
- count++;
- }
- while (input.charAt(count) != '*' && input.charAt(count) != '+' && input.charAt(count) != '-') {
- numberStrBld.append(input.charAt(count));
- count++;
- }
- stackNumbers.push(Integer.parseInt(String.valueOf(numberStrBld)));
- stackChars.push(input.charAt(count));
- return calculate(input.substring(count+2));
- } else {
- int count = 0;
- StringBuilder numberStrBldOne = new StringBuilder();
- StringBuilder numberStrBldTwo = new StringBuilder();
- if (input.charAt(count) == '-') {
- numberStrBldOne.append(input.charAt(count));
- count++;
- }
- while (input.charAt(count) != '*' && input.charAt(count) != '+' && input.charAt(count) != '-') {
- numberStrBldOne.append(input.charAt(count));
- count++;
- }
- stackNumbers.push(Integer.parseInt(String.valueOf(numberStrBldOne)));
- stackChars.push(input.charAt(count));
- numberStrBldOne.delete(0, numberStrBldOne.length());
- count++;
- // System.out.println(count);
- // System.out.println(input.charAt(count));
- // count++;
- // System.out.println(input.charAt(count));
- while (input.charAt(count) != '*' && input.charAt(count) != '+' && input.charAt(count) != '-' && input.charAt(count) != ')') {
- numberStrBldOne.append(input.charAt(count));
- count++;
- }
- stackNumbers.push(Integer.parseInt(String.valueOf(numberStrBldOne)));
- return "";
- }
- }
- }
- // 45 + 55
- // 100
- // 45+(24*(12+3))
- // 405
- // 12*(35-(46*(5+15)))
- // -10620
- // -12*(35-(-46*(5+15)))
- // 1910
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement