public class Func {
enum OP_TYPE{
VALUE,
ADDITION,
SUBTRACTION,
MULTIPLICATION,
DIVISION
}
OP_TYPE op;
Func left;
Func right;
float value;
public Func(OP_TYPE op, Func left, Func right){
this.op = op;
this.left = left;
this.right = right;
}
public Func(float value){
this.op = OP_TYPE.VALUE;
this.value = value;
}
public static Func createFunc
(String formula
){
Func func = null;
for(int i = formula.length() - 1; i > 0; i--){
if(formula.charAt(i) == '+'){
System.
out.
println("Create addition: " + formula
);
String a
= formula.
substring(0, i
); //5
String b
= formula.
substring(i
+ 1, formula.
length()); //4
func = new Func(Func.OP_TYPE.ADDITION, a, b);
return func;
} else if(formula.charAt(i) == '-'){
System.
out.
println("Create subtraction: " + formula
);
String a
= formula.
substring(0, i
); //5
String b
= formula.
substring(i
+ 1, formula.
length()); //4
func = new Func(OP_TYPE.SUBTRACTION, a, b);
return func;
}
}
System.
out.
println("Create value: " + formula
);
float value
= Float.
parseFloat(formula
);
func = new Func(value);
return func;
}
public void printONP(){
if(op == OP_TYPE.VALUE){
}else {
left.printONP();
right.printONP();
}
}
switch(op){
case ADDITION:
return "+";
case SUBTRACTION:
return "-";
}
return "?";
}
this.op = op;
this.left = createFunc(left);
this.right = createFunc(right);
}
public float calc(){
if(op == OP_TYPE.ADDITION){
return left.calc() + right.calc();
}else if(op == OP_TYPE.SUBTRACTION){
return left.calc() - right.calc();
}else if(op == OP_TYPE.VALUE){
return value;
}
return 0.0f;
}
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}