fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. abstract class Node {
  8. abstract double evaluate();
  9. }
  10.  
  11. class ValueNode extends Node {
  12. double value;
  13.  
  14. public ValueNode(double value) {
  15. this.value = value;
  16. }
  17.  
  18. double evaluate() {
  19. return value;
  20. }
  21. }
  22.  
  23. abstract class OpNode extends Node {
  24. Node left;
  25. Node right;
  26.  
  27. public OpNode(Node left, Node right) {
  28. this.left = left;
  29. this.right = right;
  30. }
  31. }
  32.  
  33. class MultiplicationNode extends OpNode {
  34. public MultiplicationNode(Node left, Node right) {
  35. super(left, right);
  36. }
  37.  
  38. @Override
  39. double evaluate() {
  40. return left.evaluate() * right.evaluate();
  41. }
  42. }
  43.  
  44. class AdditionNode extends OpNode {
  45. public AdditionNode(Node left, Node right) {
  46. super(left, right);
  47. }
  48.  
  49. @Override
  50. double evaluate() {
  51. return left.evaluate() + right.evaluate();
  52. }
  53. }
  54.  
  55. class Ideone
  56. {
  57. public static void main (String[] args) throws java.lang.Exception
  58. {
  59. Node node = new AdditionNode(
  60. new ValueNode(1),
  61. new MultiplicationNode(
  62. new ValueNode(2),
  63. new ValueNode(3)
  64. )
  65. );
  66.  
  67. System.out.println(node.evaluate());
  68. }
  69. }
Success #stdin #stdout 0.07s 380160KB
stdin
Standard input is empty
stdout
7.0