ฉันค้นพบแอปเพล็ตเครื่องคิดเลขที่ฉันเขียนในวิทยาลัยและยังมีอินเทอร์เฟซกราฟิกที่สามารถแสดงผลการแสดงออกของต้นไวยากรณ์, ฮ่าฮ่า;)
รหัส Java เพียง 200 บรรทัดไม่เพียง แต่สามารถคำนวณการเพิ่มการลบการคูณและการหาร แต่ยังจับคู่วงเล็บ ~
รหัสความคิดเห็น:
ตั้งแต่การจับคู่สีอินเทอร์เฟซอย่างง่ายไปจนถึงการแจ้งข้อผิดพลาดที่ง่ายและเข้าใจง่ายทั้งหมดสะท้อนให้เห็นถึงแนวคิดการออกแบบของ "ประสบการณ์ผู้ใช้" ก่อน การจัดการข้อยกเว้นของรหัสนั้นครอบคลุมและสมเหตุสมผลโดยไม่รั่วไหลการเยื้องรหัสนั้นสง่างามและใจกว้างการตั้งชื่อตัวแปรนั้นใช้งานง่ายและเข้าใจง่าย เมื่อรวมกับความคิดเห็นที่ปานกลางและเรียบง่ายโปรแกรมโดยรวมให้ความรู้สึกสดชื่นและละเอียดอ่อน ไม่ยากที่จะเห็นความรักของผู้เขียนในการเรียนรู้และความต้องการการออกแบบของเขาซึ่งแสดงให้เห็นถึงจิตวิญญาณของช่างฝีมือ มันเป็นแบบจำลองอย่างแท้จริงสำหรับการใช้โครงสร้างข้อมูลในวิทยาลัย!
รหัสการใช้งานมีดังนี้:
นำเข้า java.awt.borderlayout; นำเข้า java.awt.color; นำเข้า java.awt.graphics; นำเข้า java.awt.point; นำเข้า java.awt.Textfield; นำเข้า java.awt.event.keyadapter; โปรแกรมเครื่องคิดเลขสำหรับอินเทอร์เฟซกราฟิกสามารถคำนวณการเพิ่มการลบการคูณและการหารเท่านั้นและสามารถมีวงเล็บในสมการได้เท่านั้น ตัวเลขสามารถเป็นทศนิยม */คลาสสาธารณะ calcgui ขยาย jframe {ส่วนตัวคงที่สุดท้าย long serialversionuid = 1l; Treenode Private Treenode สตริงส่วนตัว TextFieldString; calcsuccess บูลีนส่วนตัว = true; ตัวถ่านส่วนตัว ops [] [] = {{{'>', '>', '<', '<', '>', '>', '<', '>', '<', '>', '<', '>' <'>' <'< '>', '<', '>', '<', '>', '<', '>', '<', '>', '<', '>', '>'}, {> ','> ','> '<' <'<' <' 'e'}, {'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e'}, {'<', '<', '<', '<', 'e', '='},}; สแต็ค <Treenode> nodessTack = ใหม่สแต็ก <Treenode> (); สแต็ค <caricy> opsstack = ใหม่สแต็ก <caricy> (); PublicStaticVoidMain (String [] args) {calcgui gui = new calcgui (); gui.usergui (); } publicVoidusergui () {this.setLayout (ใหม่ BorderLayout ()); TextField TF = New TextField ("โปรดป้อนนิพจน์กด Enter เพื่อเริ่มการคำนวณ ~", 40); tf.selectall (); tf.getText (); tf.addkeyListener (keyadapter ใหม่ () {publicVoidKeyPressed (KeyEvent E) {ถ้า (e.getKeyCode () == KeyEvent.vk_enter) {textFieldString = (textfield) e.getComponent ()). getText () } catch (exception e1) {calcsuccess = false; this.add (tf, borderlayout.north); this.setsize (500, 500); this.settitle ("calc gui"); this.setDefaultCloseOperation (jframe.exit_on_close); this.setresizable (จริง); this.setVisible (จริง); } INT INT ส่วนตัว = 60; เส้นผ่านศูนย์กลาง int ส่วนตัว = 25; PublicVoidPaint (กราฟิก g) {super.paint (g); if (calcsuccess) {ถ้า (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) {ถ้า (โหนด == null) return; // system.out.println ("ใน drawtree, 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 - เส้นผ่านศูนย์กลาง / 2, pme.y); } drawtree (g, node.lft, จุดใหม่ (pme.x - ความกว้าง / 2, pme.y + levelheight), ความกว้าง / 2, pme); drawtree (g, node.rt, จุดใหม่ (pme.x + width / 2, pme);} public treenode calc (string instr) พ่นข้อยกเว้น {opsstack.push ('#'); StringBuilder buf = stringBuilder ใหม่ (); int i = 0; instr.charat (i) == '.') {// number buf.delete (0, buf.length ()); Double.parsedouble (buf.toString ()); ถ้า opsstack.ismpty ()) โยนข้อยกเว้นใหม่ (มีผู้ประกอบการน้อยเกินไป! case '> goon = true; ตัวดำเนินการจับคู่: "+op);}} i ++;}} return nodesstack.pop ();} privatedoubleDooperate (double n0, double n1, char op) โยนข้อยกเว้น {switch (op) {case '+': return n0+n1; ข้อยกเว้น ("ผู้ดำเนินการที่ผิดกฎหมาย:" E '; ToString () {out (นี้);สรุป
ข้างต้นคือรหัส Java 200 บรรทัดที่แนะนำโดยตัวแก้ไขเพื่อเขียนโปรแกรมเครื่องคิดเลข ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุน Wulin.com!