Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
1*2-3+4
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
/** Mathematical Expression Evaluator using two Stacks */ import java.util.*; import java.lang.*; class Rextester { public static void main(String args[]) { String expr = "4*3+2-1"; System.out.println(expr + " = " + evaluate(expr)); } private static int evaluate(String expr) { Stack<Character> opStack = new Stack<Character>(); Stack<Integer> valueStack = new Stack<Integer>(); char[] tokens = expr.toCharArray(); for(Character c : tokens) { if(c >= '0' && c <= '9') { // digit valueStack.push(Integer.parseInt(c.toString())); } else { // operator if(!opStack.isEmpty() && hasprecedence(c, opStack.peek())) { valueStack.push(getValue(valueStack.pop(), valueStack.pop(), opStack.pop())); } opStack.push(c); } //System.out.println(valueStack); } while(valueStack.size() >= 2 && !valueStack.isEmpty()) { valueStack.push(getValue(valueStack.pop(), valueStack.pop(), opStack.pop())); //System.out.println("ok: " + valueStack); } if(!valueStack.isEmpty()) return valueStack.pop(); return 0; } private static boolean hasprecedence(char op2, char op1) { if(op1 == '*' && op2 == '+') { return true; } else if(op1 == '*' && op2 == '-') { return true; } else if(op1 == '+' && op2 == '-') { return true; } else if(op1 == '/' && op2 == '+') { return true; } else if(op1 == '/' && op2 == '-') { return true; } else { return false; } } private static int getValue(int val1, int val2, char op) { int result = 0; switch(op) { case '+': result = val1 + val2; break; case '-': result = val2 - val1; break; case '*': result = val1 * val2; break; } return result; } }
[
+
]
Show input
Compilation time: 1.35 sec, absolute running time: 0.19 sec, cpu time: 0.18 sec, memory peak: 18 Mb, absolute service time: 1,55 sec
edit mode
|
history
|
discussion
4*3+2-1 = 13