La calculatrice implémentée en Java, le principe est lu comme des commentaires de code, le contenu spécifique est le suivant
classe publique 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 + "=" + calcul (arrayList)); } / ** * Utilisez des expressions ultérieures pour calculer le résultat * 1. Lorsque la chaîne actuelle est un nombre, entrez directement la pile * 2. Lorsque la chaîne actuelle est une calculatrice, retirez les deux premiers calculs sur la pile * 3. Mettez le résultat de calcul dans le complexe, et le dernier élément restant dans la pile est le résultat requis * / STRITAL PRIVÉE INT CALCULAT (ARRAYLIST <String> Obj) {ArrayList <stralise> Résultat); System.out.println (résultat); Stack <Integer> stack = new Stack <> (); for (int i = 0; i <result.size (); i ++) {String symbol = result.get (i); if (isdigital (symbol)) {// Le nombre est directement pile.push (Integer.ParseInt (symbole)); } else {// L'opérateur int num1, num2; num1 = stack.pop (); // supprime deux nombres num2 = stack.pop (); switch (symbol) {case "+": stack.push (num2 + num1); casser; case "-": stack.push (num2 - num1); casser; case "*": stack.push (num2 * num1); casser; case "/": stack.push (num2 / num1); casser; par défaut: pause; }}} return stack.pop (); } / ** * La traversée intraticienne est modifiée en Transform en transformation ultérieure * / private static arrayList <string> (arrayList <string> arrayList) {stack <string> stack = new Stack <> (); ArrayList <string> result = new ArrayList <> (); pour (int index = 0; index <arrayList.size (); index ++) {String symbol = arrayList.get (index); if (isdigital (symbole)) {// s'il s'agit d'un nombre, il est sorti directement.add (symbole); } else if (symbol.equals (")")) {String tmp; while (! (tmp = stack.pop ()). equals ("(")) {// stop après le match est réussi le résultat.add (tmp);}} else {if (stack.isempty ()) {stack.push (symbol); continue;} string tmp = stack.peek (); while (overpriority (symbol) <= inripory) est moins que la priorité dans la pile, et la pile est toujours publiée.Add (tmp); / ** * Format de la chaîne dans ArrayList * @param src 3 * 5 + 8; * @return arrayList 3 * 5 + 8 * / private static arrayList <string> StringBuilder (); ArrayList.add (comhat.toString (). } return ArrayList;} / ** * Déterminez s'il s'agit d'un nombre * @param symbol 782 ou + - * / * @return true ou false * / private static boolean isdigital (string symbol) {return! symbol.equals ("+") &&! symbol.equals ("-") &&! ! Symbol.equals ("(") && symbol.equals (")");} private static int inPriority (String ch) {switch (ch) {return 4; Cas "+": Cas "-": Retour 3;Tout ce qui précède est le contenu complet de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.