La calculadora implementada en Java, el principio se lee como comentarios de código, el contenido específico es el siguiente
clase pública MyCalculator {public static void main (String [] args) {String obj = "6+ (8/2)+6/3+1*8+30"; ArrayList <String> ArrayList = strFormat (obj); System.out.println (obj + "=" + calculación (arrayList)); } / *** Use expresiones posteriores para calcular el resultado* 1. Cuando la cadena actual es un número, ingrese directamente la pila* 2. Cuando la cadena actual es una calculadora, elimine los dos primeros cálculos en la pila* 3. Ponga el resultado de cálculo en la pila, y el último elemento restante en la pila es el resultado requerido* / privado estado estático (ArrayList <string> obj) {strAyList {stray strAy sur. transformar (obj); System.out.println (resultado); Pila <integer> stack = new Stack <> (); for (int i = 0; i <result.size (); i ++) {String Symbol = result.get (i); if (isDigital (símbolo)) {// El número es directamente stack.push (integer.parseInt (símbolo)); } else {// el operador int num1, num2; num1 = stack.pop (); // Eliminar dos números num2 = stack.pop (); switch (símbolo) {case " +": stack.push (num2 + num1); romper; caso " -": stack.push (num2 - num1); romper; caso " *": stack.push (num2 * num1); romper; caso " /": stack.push (num2 / num1); romper; predeterminado: ruptura; }}} return stack.pop (); } / *** El traversal en orden se cambia a la posterior traversal* / private Static ArrayList <String> transform (ArrayList <String> ArrayList) {Stack <String> Stack = New Stack <> (); ArrayList <String> result = new ArrayList <> (); for (int index = 0; index <arrayList.size (); index ++) {String Symbol = ArrayList.get (index); if (isDigital (símbolo)) {// Si es un número, se emite directamente.Add (símbolo); } else if (symbol.equals (")")) {string tmp; while (! (tmp = stack.pop ()). Equals ("(")) {// detente después de que la coincidencia sea exitosa resultado.Add (tmp);}} else {if (stack.isEmpty ()) {stack.push (symbol); continuar;} string tmp = stack.peek (); while (outpriority (outpriority (symbol) <= in -inPush) // La prioridad es menor que la prioridad en la pila, y la pila siempre se libera. resultado.Add (stack.pop ()); ArrayList <String> ArrayList = new ArrayList <> (); (. (! Comchar.ToString (). Trim (). Equals ("")) {ArrayList.Add (combar.ToString (). Trim ()); ! Symbol.equals ("+") &&! Symbol.equals ("-") &&! Symbol.Equals ("*") &&! "/": return 4;Todo lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.