나는 대학에서 쓴 계산기 애플릿을 발견했으며, 표현식 구문 트리를 그래픽으로 표시 할 수있는 그래픽 인터페이스도 있습니다.
200 줄의 Java 코드만이 추가, 뺄셈, 곱셈 및 분할을 계산할 수있을뿐만 아니라 괄호와 일치 할 수 있습니다.
코드 댓글 :
간단한 인터페이스 색상 일치에서 단순하고 이해하기 쉬운 오류 프롬프트에 이르기까지 모두 "사용자 경험"의 설계 개념을 먼저 반영합니다. 코드 예외 처리는 포괄적이고 합리적이며, 누출없이 코드 압입은 우아하고 관대하며 가변적 인 이름은 직관적이고 이해하기 쉽습니다. 온건하고 간단한 의견과 결합하여 전체 프로그램은 사람들에게 신선하고 세련된 느낌을줍니다. 학습에 대한 저자의 사랑과 디자인에 대한 그의 요구를 보는 것은 어렵지 않습니다. 대학에서 데이터 구조를 적용하는 모델입니다!
구현 코드는 다음과 같습니다.
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; 그래픽 인터페이스의 계산기 프로그램은 첨가, 빼기, 곱셈 및 분할 만 계산할 수 있으며 방정식에 괄호가있을 수 있습니다. 숫자는 10 진수 */공개 클래스 Calcgui가 jframe {private static final long serialversionuid = 1l을 확장 할 수 있습니다. 프라이빗 트리 노드 결과 트리; 개인 문자열 TextFieldString; 개인 부울 calcsuccess = true; 개인 char ops [] [] = {{ '>', '>', '<', '<', '>', ','> ','< '', '>', '<', '>', '<', ',', '<', '', '<', '>', '<', '', '' '', '', '<' ',' ',' ',' ',' ',' ',' ',' ',' ','< ',' '', '' ', '>', '<', '>', '<', '>', '<', '>', '<', '>', '<', '>', '>', '>', '},'< ',' ',' ',', '}, {'< ',' '<', '<' '<' '<', '<' ', 'e'}, { 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e'}, { '<', '<', '<', '<', 'e', '='},}; 스택 <TREENODE> NODESSTACK = New Stack <Treenode> (); 스택 <문자> opsstack = 새로운 스택 <문자> (); 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 = ((텍스트 필드) e.getComponent ()). "#")} catch (예외 e1) {calcsuccess = false.} this.repaint (); this.add (tf, borderlayout.north); this.setsize (500, 500); this.settitle ( "calc gui"); this.setDefaultCloseOperation (jframe.exit_on_close); this.setResizable (true); this.set -Visible (true); } private int levelHeight = 60; 개인 int 직경 = 25; publicvoidpaint (그래픽 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); DrawTree (g, resulttree, p, this.getWidth () / 2-20, p); }} else {g.setColor (color.red); G.DrawString ( "표현 구문이 잘못되었습니다!", 10, 80); }} privateVoidDrawCircle (그래픽 g, 포인트 p, int r) {g.drawoval (px -r, py -r, r * 2, r * 2); } privateVoidDrawTree (그래픽 g, Treenode 노드, 포인트 pme, int 너비, point pfather) {if (node == null) return; // system.out.println ( "in drawtree, node.value =" + node.value.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); } DrawTree (G, Node.lft, New Point (PME.X- 너비 / 2, PME.Y + LEVELHEIGHT), 너비 / 2, PME); DrawTree (g, node.rt, new Point (pme.x + width / 2, pme);} public treenode calc (String Inst)은 예외를 {opsstack.push ( '#'); StringBuilder buf = new StringBuilder (); int i = 0; instr.charat (i) == ' double.tostring () istopsh. IFSTACK.isempty ()는 새로운 예외를 던집니다. CASE = TREENDER N1 = NODESTACK.POP (); 일치하는 연산자 : "+op);}} i ++;}} return nodesstack.pop ();} privatedoubledooperate (double n0, double n1, char op)는 예외 {switch (op) {case '+': return n0+n1; case ' -': return n0 - n1; case ' *'; return n0 / n1; n0 / n1; n0 / n1; Exception("Illegal operator: " + op); } } privateintgetSub(char c){ switch(c){ case '+': return 0; case '-': return 1; case '*': return 2; case '/': return 3; case '(': return 4; case ')': return 5; case '#': return 6; default : return -1; } }}class TreeNode{ public double value; public char op = '공개 트린 노드 (Public Treenode); toString (hare);요약
위는 계산기 프로그램을 작성하기 위해 편집기가 소개 한 200 줄의 Java 코드입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com을 지원해 주셔서 대단히 감사합니다!