Convert String to operator(+*/-) in java

I am using Stack class to calculate simple arithmetic expressions involving integers, such as 1+2*3.your program would execute operations in the order given,without regarding to the precedence of operators. *Thus, the expression 1+2*3 should be calculated (1+2)*3=9,not 1+(2*3)=7.

If i get the input as 1+2*3,i know how to convert the string 1,2,3 to Integer.but i don't know how to covert +,* from string type to operator.

My code logic is: For eg: Given string 2 + (3 * 5), So 3 * 5 will be operated first then +2 will be performed in result of 3 * 5.

9

5 Answers

probably the best way to do it will be equals, but it's best to ignore whitespaces:

i'm not quite sure how you split your string, but for example, if you have a char op and two integer a and b:

String str = op.replace(" ", "");
if(str.equals("*")){ retVal = a*b;
} else if(str.equals("+")){ retVal = a+b;
}//etc
4

Do what Ogen suggested and manually check the operator. A quick shortcut to doing the if, else if .... structure is switch, that is

switch(operand) {
case "*": break;
case "+": break; ..... default:
}

You will have to manually check and assign the operator. E.g.

if (s.equals("+")) { // addition
}

Quick solution: Use below code for executing correct javascript Arithmetic expression in java.

 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine se = manager.getEngineByName("JavaScript"); try { Object result = se.eval(val); System.out.println(result.toString()); } catch (ScriptException e) { // TODO Auto-generated catch block e.printStackTrace(); }

Ok, assuming your assignment needs you to use the Stack class and you already have the logic to pick numbers ( including the negative numbers -- that would an operator followed by another operator in all but one cases) and operators and parens, what you could do is as follows.

If you encounter a number, pop the last two elements from your stack. The first item you pop will be an operator and the next will be a number. Evaluate the expression and push it into Stack and continue.

You can ignore the parenthesis. You will also have to handle the case of reading a number or parenthesis the first time.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like