J'ai découvert une applet de calculatrice que j'ai écrite au collège, et il y a aussi une interface graphique qui peut afficher graphiquement les arbres de syntaxe d'expression, haha;)
Seulement 200 lignes de code Java peuvent non seulement calculer l'addition, la soustraction, la multiplication et la division, mais également les supports de correspondance ~
Commentaires du code:
De la correspondance des couleurs d'interface simple à des invites d'erreur simples et faciles à comprendre, toutes reflètent d'abord le concept de conception de "l'expérience utilisateur"; Le traitement des exceptions de code est complet et raisonnable, sans fuir, l'indentation du code est élégante et généreuse, la dénomination variable est intuitive et facile à comprendre; Combinée à des commentaires modérés et simples, le programme global donne aux gens un sentiment frais et raffiné. Il n'est pas difficile de voir l'amour de l'auteur pour l'apprentissage et sa demande de design, qui montre l'esprit d'artisan. C'est vraiment un modèle pour appliquer des structures de données au collège!
Le code d'implémentation est le suivant:
import java.awt.borderlayout; import java.awt.color; import java.awt.graphics; import java.awt.point; import java.awt.textfield; import java.awt.event.keyadapter; import java.awt.event.keyevent; import java.util.stack; import javax.wing.wfrrame; Le programme pour l'interface graphique ne peut calculer que l'addition, la soustraction, la multiplication et la division, et il peut y avoir des supports dans l'équation. Numeric peut être décimal * / classe publique Calcgui étend JFrame {private static final long SerialVersionUID = 1l; Treenode privé ResultimeTree; chaîne privée TextFielDString; CalcSuccess booléen privé = true; Char privé ops [] [] = {{{'>', '>', '<', '<', '>', '>', '<', '>', '<', '>', '<', '>', '<', '>', '<', ','> '', '>', '<', '>', '<', '>', '<', '>', '<', '>', '<', '>', '>'}, {'>', '>', '>', '>', ',', '>', ',' <',' <',', ',', '<', ', 'E'}, {'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e'}, {'<', '<', '<', '<', 'e', '='},}; Stack <serenode> nodesstack = new Stack <rerenode> (); Stack <actocier> OpsStack = new Stack <Comacacter> (); publicStaticVoidMain (String [] args) {calcgui GUI = new Calcgui (); Gui.Userergui (); } publicVoiDUserGui () {this.setLayout (new BorderLayout ()); TextField tf = new TextField ("Veuillez saisir l'expression, appuyez sur Entrée pour démarrer le calcul ~", 40); tf.selectall (); tf.getText (); tf.addkeyListener (new KeyAdapter () {publicVoidKeyPressed (keyEvent e) {if (e.getkeycode () == keyEvent.vk_enter) {textFielDSstring = (TextField) e.getComponent ()). Gettex } catch (exception e1) {calcSucCess = false;} calcul.Tepaint ();}}}); this.add (tf, borderlayout.north); this.setSize (500, 500); this.setTitle ("Calc GUI"); this.setDefaultCloseOperation (jframe.exit_on_close); this.setResiSable (true); this.setVisible (true); } private int niveauHeight = 60; diamètre int privé = 25; publicVoidPaint (graphiques g) {super.paint (g); if (calcsuccess) {if (resultTree! = null) {g.drawstring ("Calculez le résultat:" + resultTree.Value, 10, 80); int rootbeginx = this.getWidth () / 2; int rootbeginy = 100; Point p = nouveau point (rootbeginx, rootbeginy); DrawTree (g, resultTree, p, this.getWidth () / 2 - 20, p); }} else {g.setColor (Color.red); G.Drawstring ("La syntaxe d'expression est incorrecte!", 10, 80); }} privateVoidDrawCircle (Graphics G, point p, int r) {g.Drawoval (px - r, py - r, r * 2, r * 2); } privateVoidDrawTree (Graphics G, Treenode Node, Point PME, Int Width, Point Pfather) {if (node == null) return; // System.out.println ("dans DrawTree, Node.Value =" + Node.value + ", node.op =" + node.op); g.setColor (Color.Green); this.Drawcircle (G, PME, diamètre / 2); G.Drawline (PME.X, PME.Y, Pfather.X, Pfather.Y); if (node.op! = 'e') {g.setColor (color.black); G.Drawstring (String.ValueOf (Node.op), PME.X, PME.Y); } else {g.setColor (Color.Black); G.Drawstring (String.ValueOf (Node.Value), PME.X - Diamètre / 2, PME.Y); } DrawTree (G, Node.lft, nouveau point (PME.X - Width / 2, PME.Y + LevelHeight), Width / 2, PME); Drawtree (g, node.rt, new Point (pMe.x + width / 2, pMe);} public Treenode calc (String instlit) lève une exception {opsstack.push ('#'); stringbuilder buf = new StringBuilder (); int i = 0; while (i <instr.Length ()) {if (Caractor.isDigit (instr.Charat (i)) instant.Charat (i) == '.') {// Numéro Buf.Delete (0, buf.Length ()); Double.Parsedouble (buf.toString (); if (opsstack.isempty (), "il y a trop peu d'opérateurs!"); Break; Exception (pas d'opérateur correspondant: "+ op);}} i ++;}} Jetez une nouvelle exception ("l'opérateur illégal:" + Op); = 'E'; public Treenode LFT; toString () {out);Résumer
Ce qui précède est les 200 lignes de code Java introduites par l'éditeur pour rédiger un programme de calculatrice. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien à wulin.com!