Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.telerikacademy;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.math.BigDecimal;
- public class Solve2 {
- private static String input;
- private static int charPosition;
- private static int nextCharPosition;
- public static void main(String[] args) throws IOException {
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
- input = bufferedReader.readLine();
- nextCharPosition = input.charAt(0);
- System.out.println(parseExpression().toBigInteger());
- }
- private static boolean isEqual(int charForCheck) {
- while (nextCharPosition == ' ')
- nextCharPosition = (++charPosition < input.length()) ? input.charAt(charPosition) : -1;
- if (nextCharPosition == charForCheck) {
- nextCharPosition = (++charPosition < input.length()) ? input.charAt(charPosition) : -1;
- return true;
- }
- return false;
- }
- private static BigDecimal parseExpression() {
- BigDecimal result = BigDecimal.ZERO;
- int startPos = charPosition;
- if (isEqual('(')) {
- result = parseExpression();
- isEqual(')');
- } else if (nextCharPosition >= '0' && nextCharPosition <= '9') {
- while (nextCharPosition >= '0' && nextCharPosition <= '9')
- nextCharPosition = (++charPosition < input.length()) ? input.charAt(charPosition) : -1;
- result = BigDecimal.valueOf(Double.parseDouble(input.substring(startPos, charPosition)));
- }
- while(true) {
- if (isEqual('+'))
- result = result.add(parseExpression());
- else if (isEqual('-'))
- result = result.subtract(parseExpression());
- else if (isEqual('*'))
- result = result.multiply(parseExpression());
- else
- return result;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement