لقد اكتشفت Applet الآلة الحاسبة التي كتبتها في الكلية ، وهناك أيضًا واجهة رسومية يمكنها عرض أشجار بناء جملة التعبير بيانيا ، هاها ؛)
لا يمكن فقط 200 سطر من رمز Java حساب الإضافة والطرح والضرب والقسمة فحسب ، بل أيضًا مطابقة بين قوسين ~
تعليقات الرمز:
من مطابقة ألوان الواجهة البسيطة إلى مطالبات الخطأ البسيطة والسهلة الفهم ، كلها تعكس مفهوم تصميم "تجربة المستخدم" أولاً ؛ يعد معالجة استثناءات الكود شاملة ومعقولة ، دون تسرب ، مسافة بادئة رمز أنيقة وسخية ، وتسمية متغيرة بديهية وسهلة الفهم ؛ إلى جانب التعليقات المعتدلة والبسيطة ، يمنح البرنامج العام للناس شعورًا جديدًا وصقلًا. ليس من الصعب رؤية حب المؤلف للتعلم وطلبه على التصميم ، مما يدل على روح الحرفي. إنه حقًا نموذج لتطبيق هياكل البيانات في الكلية!
رمز التنفيذ كما يلي:
استيراد java.awt.borderlayout ؛ استيراد java.awt.color ؛ استيراد java.awt.graphics ؛ استيراد java.awt.point ؛ java.awt.textfield ؛ يمكن لبرنامج الآلة الحاسبة للواجهة الرسومية فقط حساب الإضافة والطرح والضرب والقسمة ، ويمكن أن يكون هناك أقواس في المعادلة. يمكن أن يكون الرقم عشري */فئة عامة calcgui يمتد jframe {private static final long serialversionuid = 1L ؛ TreeNode ResultTree الخاص ؛ سلسلة خاصة textfieldstring ؛ calcsuccess المنطقية الخاصة = صحيح ؛ private char ops [] = {{{{'>' ، '>' ، '<' ، '<' ، '>' ، '>' ، '<' ، '>' ، '<' ، '>' ، '<' ، '>' ، <'،' ، '،' ، '،' ، '،' ، '،' ، ' "> '' ، '<' ، '>' ، '<' ، '>' ، '<' ،> '،' <'،'> '،' <'،'> '،>'} ، {'>' ،> '،'> '، "e '} ، {' e '،' e '،' e '،' e '،' e '،' e '،' e '،' e '،' e '،' e '} ، {' <'،' <'، <' ، <'،' e '،' = '} ،} ؛ Stack <TreeNode> nodessTack = new stack <TreeNode> () ؛ Stack <Faracter> OpsStack = new stack <Charfer> () ؛ 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 () {publicvoidkeypression (keyevent e) {if ( } catch (استثناء e1) {calcsuccess = false ؛ this.add (tf ، borderlayout.north) ؛ this.setsize (500 ، 500) ؛ this.settitle ("calc gui") ؛ this.setDefaultCloseOperation (jframe.exit_on_close) ؛ this.setResible (صحيح) ؛ this.setVisible (صحيح) ؛ } 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) ؛ DrawTree (g ، resulttree ، p ، this.getWidth () / 2 - 20 ، p) ؛ }} آخر {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 (الرسومات G ، Node Treenode ، Point PME ، عرض int ، point pfather) {if (node == null) return ؛ // system.out.println ("in drawtree ، node.value =" + node.value + "، node.op =" + node.op) ؛ G.SetColor (color.green) ؛ this.drawcircle (G ، PME ، Diameter / 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) ؛ } آخر {g.setColor (color.black) ؛ G.DrawString (string.valueof (node.value) ، pme.x - diameter / 2 ، pme.y) ؛ } DrawTree (g ، node.lft ، new 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 instr) يلقي الاستثناء {opsstack.push ('#') instr.charat (i) == '.') {// number buf.delete (0 ، buf.length () ؛ Double.Parsedouble (NOMPTERSTRING) ؛ إذا كان هناك عدد قليل جدًا من المشغلات () ؛ Case '>' goon = true ؛ مشغل مطابقة: "+op) ؛}} i ++ ؛}} return nodesstack.pop () ؛} privatuedoutedOuterate (double n0 ، double n1 ، char op) يرمي استثناء {switch (op) {case '+': return n0+n1 ؛ case ' -': n1 ؛ n1 ؛ case ' *' "المشغل غير الشرعي:" 'e' toString () {out) ؛لخص
ما سبق هو 200 سطر من كود Java الذي قدمه المحرر لكتابة برنامج حاسبة. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمك إلى wulin.com!