class Expr
{
// Sum = product
// = sum '+' product
// = sum '-' product
public double sum(String args)
{
for(int i = args.length(); i > 0; i--)
{
if(args.substring(i - 1, i).equals("+"))
{
return sum(args.substring(0, i - 1)) + product(args.substring(i, args.length())) ;
}
if(args.substring(i - 1, i).equals("-"))
{
return sum(args.substring(0, i - 1)) - product(args.substring(i, args.length())) ;
}
}
return product(args) ;
}
// product = power
// = product '*' power
// = product '/' power
// = product '%' power
public double product(String args)
{
for(int i = args.length(); i > 0; i--)
{
if(args.substring(i - 1, i).equals("*"))
{
return product(args.substring(0, i - 1)) * power(args.substring(i, args.length())) ;
}
if(args.substring(i - 1, i).equals("/"))
{
return product(args.substring(0, i - 1)) / power(args.substring(i, args.length())) ;
}
if(args.substring(i - 1, i).equals("%"))
{
return product(args.substring(0, i - 1)) % power(args.substring(i, args.length())) ;
}
}
return power(args) ;
}
// power = term
// = power '^' term
public double power(String args)
{
for(int i = args.length(); i > 0; i--)
{
if(args.substring(i - 1, i).equals("^"))
{
return Math.pow(power(args.substring(0, i - 1)),
term(args.substring(i, args.length()))) ;
}
}
return term(args) ;
}
// term = number
public double term(String arg)
{
return Double.valueOf(arg) ;
}
public static void main(String [] args)
{
Expr E = new Expr() ;
String expr = "" ;
for(String arg : args)
{
expr += arg ;
}
String value = String.valueOf(E.sum(expr)) ;
System.out.println("Value of given expression is " + value) ;
}
}