A calculadora implementada em Java, o princípio é lido como comentários de código, o conteúdo específico é o seguinte
classe 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 + "=" + calcular (ArrayList)); } / *** Use expressões subseqüentes para calcular o resultado* 1. Quando a sequência atual é um número, entre diretamente na pilha* 2. Quando a sequência atual for uma calculadora, retire os dois primeiros cálculos na pilha* 3. Coloque o resultado do calculação (prisão de calcular) e o último elemento restante na pilha é o resultado, o resultado), o resultado da pilha). transform (obj); System.out.println (resultado); Pilha <Teger> pilha = new Stack <> (); for (int i = 0; i <resultado.size (); i ++) {string símbolo = resultado.get (i); if (isDigital (símbolo)) {// o número é diretamente Stack.push (Integer.parseint (símbolo)); } else {// O operador int num1, num2; NUM1 = Stack.pop (); // Retire dois números num2 = Stack.pop (); switch (símbolo) {case " +": Stack.push (num2 + num1); quebrar; case " -": Stack.push (num2 - num1); quebrar; case " *": Stack.push (num2 * num1); quebrar; case " /": Stack.push (num2 / num1); quebrar; Padrão: quebra; }}} return stack.pop (); } / *** A travessia na ordem é alterada para Traversal subsequente* / Private Static ArrayList <String> Transform (ArrayList <String> ArrayList) {Stack <String> Stack = new Stack <> (); ArrayList <String> resultado = new ArrayList <> (); for (int index = 0; index <ArrayList.size (); index ++) {string símbolo = ArrayList.get (index); if (isDigital (símbolo)) {// Se for um número, ele é emitido diretamente.add (símbolo); } else if (symbol.equals (")")) {string tmp; while (! (tmp = Stack.pop ()). Equals ("(")) {// pare após a partida for bem -sucedida resultado.add (tmp);}} else {if (sTack.isEmpty ()) {stak.push (símbolo); continuação;} string tmp = fort.Pokp () while (fora (ousl) (sin); // A prioridade é menor que a pilha e a pilha é sempre liberada. Result.Add (Stack.pop ()); Arraylist <string> ArrayList = novo ArrayList <> (); (! Comchar.ToString (). (! Comchar.toString (). ! Symbol.equals ("+") &&! "/" Retorno 4;Todos os itens acima são todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.