Advertisement
Guest User

Untitled

a guest
May 19th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. package com.telerikacademy;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.math.BigDecimal;
  7.  
  8. public class Solve2 {
  9. private static String input;
  10. private static int charPosition;
  11. private static int nextCharPosition;
  12.  
  13. public static void main(String[] args) throws IOException {
  14. BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
  15. input = bufferedReader.readLine();
  16. nextCharPosition = input.charAt(0);
  17.  
  18. System.out.println(parseExpression().toBigInteger());
  19. }
  20.  
  21. private static boolean isEqual(int charForCheck) {
  22. while (nextCharPosition == ' ')
  23. nextCharPosition = (++charPosition < input.length()) ? input.charAt(charPosition) : -1;
  24. if (nextCharPosition == charForCheck) {
  25. nextCharPosition = (++charPosition < input.length()) ? input.charAt(charPosition) : -1;
  26. return true;
  27. }
  28. return false;
  29. }
  30.  
  31. private static BigDecimal parseExpression() {
  32. BigDecimal result = BigDecimal.ZERO;
  33. int startPos = charPosition;
  34.  
  35. if (isEqual('(')) {
  36. result = parseExpression();
  37. isEqual(')');
  38. } else if (nextCharPosition >= '0' && nextCharPosition <= '9') {
  39. while (nextCharPosition >= '0' && nextCharPosition <= '9')
  40. nextCharPosition = (++charPosition < input.length()) ? input.charAt(charPosition) : -1;
  41. result = BigDecimal.valueOf(Double.parseDouble(input.substring(startPos, charPosition)));
  42. }
  43.  
  44. while(true) {
  45. if (isEqual('+'))
  46. result = result.add(parseExpression());
  47. else if (isEqual('-'))
  48. result = result.subtract(parseExpression());
  49. else if (isEqual('*'))
  50. result = result.multiply(parseExpression());
  51. else
  52. return result;
  53. }
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement