Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- abstract class Operation:
- float arg1, arg2;
- abstract float getValue()
- class Literal extends Operation:
- float getValue() {
- retur arg1;
- }
- class Add extends Operation:
- float getValue() {
- return arg1 + arg2
- }
- class Negate extends Operation:
- float getValue() {
- return arg2 - arg1
- }
- class Calculator
- string expression
- float evaluate() {
- result = 0;
- operation = '+';
- for (var i = 0; i < lengt; i++) {
- number = compute(expression[i]);
- if (number != null) {
- result = getResult(result, number, operation)
- } else {
- operation = expression[i];
- }
- }
- return new Literal(result, null).getValue();
- }
- float getResult(result, number, operation) {
- if (operation == '+') {
- return new Add(result, number).getValue()
- } else if (operation == '-') {
- return new Add(result, new Negate(number, null)).getValue()
- }
- return new Literal(result, null).getValue();
- }
- float compute(number) {
- var number = parseInt(expression[i]);
- if (number!== NaN) {
- return number;
- }
- return null;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement