Я обнаружил апплет калькулятора, который я написал в колледже, а также есть графический интерфейс, который может графически отображать синтаксис выражения, хаха;)
Только 200 строк кода Java могут не только рассчитать добавление, вычитание, умножение и деление, но и совпадать с скобками ~
Кодовые комментарии:
От простого сопоставления цвета интерфейса до простых и простых для понимания ошибок, все это отражает концепцию дизайна «пользовательского опыта» в первую очередь; Обработка исключений кода является всеобъемлющей и разумной, без утечки, кодовое отступление является элегантным и щедрым, переменное именование является интуитивно понятным и простым для понимания; В сочетании с умеренными и простыми комментариями общая программа дает людям свежее и утонченное чувство. Нетрудно увидеть любовь автора к обучению и его спрос на дизайн, что показывает дух мастера. Это действительно модель для применения структур данных в колледже!
Код реализации выглядит следующим образом:
Импорт java.awt.borderlayout; import java.awt.color; import java.awt.graphics; import java.awt.point; импорт java.awt.textfield; import java.awt.event.keyadapter; import java.awt.event.keyevent; import. Программа калькулятора для графического интерфейса может рассчитать только добавление, вычитание, умножение и деление, а в уравнении могут быть скобки. числовое может быть десятичным */public class calcgui extends jframe {private static final long serialversionuid = 1l; Private TreeNode Resulttree; Private String TextFieldstring; Частный логический Calcsuccess = true; private char ops [] [] = {{{'>', '>', '<', '<,'> ','> ',', ','> ',' <, '>', '<', '>', '<', '>', '<,'> ',', '>', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',' '>', '<', '>', '<', '>', '<', '>', '<', '>', ',', '>', ',', '>', '<,'> ',', ','> ','> '}, {'> ','> ','> ','> ',' <','> ','> '},' <, '<,' <, '<,' <, '<,' <, '<,' <, '<,' <, '<,' <, '<,' <, '<,' <, ',' 'E'}, {'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e'}, {'<', '<', '<', ',' e ',' = '},}; Stack <TreeNode> nodessTack = new Stack <TreeNode> (); Stack <carment> opsstack = new Stack <carment> (); publicstaticvoidmain (string [] args) {calcGui gui = new CalcGui (); gui.usergui (); } publicVoidusergui () {this.setLayout (new BorderLayout ()); Textfield TF = New TextField («Пожалуйста, введите выражение, нажмите ENTER, чтобы запустить расчет ~», 40); tf.selectall (); tf.getText (); tf.addkeylistener (new KeyAdapter () {publicVoidKeyPressed (keyEvent e) {if (e.getKeyCode () == keyEvent.vk_enter) {textFieldString = ((Textfield) e.getComponent (). getText (); CalcSuccess = trueTree = rupeTree = NULL; } catch (Exception e1) {calcsuccess = false; this.add (tf, borderlayout.north); это. setize (500, 500); this.SetTitle ("Calc Gui"); this.setDefaultCloseoPeration (jframe.exit_on_close); this.SetReSizable (true); this.setvisible (true); } private int levelheight = 60; частный диаметр int = 25; publicvoidpaint (Graphics G) {super.paint (g); if (calcsuccess) {if (resulttree! = null) {g.drawstring («Рассчитайте результат:» + resulttree.value, 10, 80); int rootbeginx = this.getWidth () / 2; int rootbeginy = 100; Точка p = новая точка (rootbeginx, rootbeginy); Thrantree (G, Resulttree, P, this.getWidth () / 2 - 20, p); }} else {g.setcolor (color.red); G.DrawString («Синтаксис экспрессии неверен!», 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 ("in trantree, node.value =" + node.value + ", node.op =" + node.op); g.setcolor (color.green); this.drawcircle (g, pme, диаметр / 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 - diameter / 2, pme.y); } tranttree (g, node.lft, new Point (pme.x - ширина / 2, pme.y + levelheight), width / 2, pme); Thrantree (g, node.rt, New Point (pme.x + width / 2, pme);} public trieNode calc (String instr) Throws Exception {OpsStack.push ('#'); StringBuilder buf = new StringBuilder (); int i = 0; while (i <instrength ()) {if (характер. instr.charat (i) == '.') {// номер buf.delete (0, buf.length ()); Double.parsedouble (buf.tostring (); (opsstack.isempty ()). case '> goon = True; Оператор сопоставления: "+op);}} i ++;}} return nodesstack.pop ();} privatedoubleOperate (Double N0, Double N1, char Op) Throws Exception {switch (op) {case '+': return n0+n1; case ' -': return n0 - n1; case ' * nefort n0 * n0; Исключение («Нелегальный оператор:" + op); E '; ToString () {out (this);Суммировать
Выше приведено 200 строк кода Java, введенные редактором для написания программы калькулятора. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку Wulin.com!