Reverse Polish notation (RPN) calculator
In a nutshell RPN allows for compact arithmetic expressions requiring no parentheses to express operator priorities. The introductory article What is Reverse Polish Notation? explains the underlying idea.
This project's comprises two different goals:
-
Parse and evaluate RPN expressions:
RPN expression Conventional expression Result Comment 1 2 + 3 1 2 3 4 + - + -4 1 2 + 4 * 12 No parentheses required pi 3.1415926... symbolic constant pi pi sin 0 4 sqrt ~ -2 «~» is Unary minus 0x1a 0b1101 + 3 Binary and Hexadecimal literals -
Providing a user interface. Your are expected to write a terminal based application. This leaves different choices:
- The easy way
-
Ask the user for line by line input as you already did in e.g. At the bar . This is straightforward but offers little responsiveness.
- The hard way
-
Use a library for creating text-based GUIs like Lanterna. This requires some time diving into the API.
- The really hard way
-
Depending on your Java™ skills you may favour a GUI application over the proposed terminal based approach. However do not forget to implement the calculator's logic when fiddling with the user interface and be aware to reserve (possibly a lot of) extra time for the project.
A prototype is available at rpncalculator-0.1.jar.
Executing java -jar
rpncalculator-0.1.jar
allows for evaluating RPN
expressions in a terminal: