Saya menemukan applet kalkulator yang saya tulis di perguruan tinggi, dan ada juga antarmuka grafis yang secara grafis dapat menampilkan pohon sintaks ekspresi, haha;)
Hanya 200 baris kode Java tidak hanya dapat menghitung penambahan, pengurangan, perkalian dan divisi, tetapi juga cocok dengan tanda kurung ~
KOMENTAR KODE:
Dari pencocokan warna antarmuka sederhana hingga permintaan kesalahan yang sederhana dan mudah dipahami, semua mencerminkan konsep desain "pengalaman pengguna" terlebih dahulu; Penanganan pengecualian kode komprehensif dan masuk akal, tanpa bocor, indentasi kode elegan dan murah hati, penamaan variabel intuitif dan mudah dimengerti; Dikombinasikan dengan komentar sedang dan sederhana, program keseluruhan memberi orang perasaan segar dan halus. Tidak sulit untuk melihat kecintaan penulis untuk belajar dan permintaannya akan desain, yang menunjukkan semangat pengrajin. Ini benar -benar model untuk menerapkan struktur data di perguruan tinggi!
Kode implementasi adalah sebagai berikut:
Impor java.awt.borderlayout; impor java.awt.color; impor java.awt.graphics; impor java.awt.point; impor java.awt.textfield; impor java.awt.event.keyadapter; impor java.awt.event java.awt.event.keyadapter; impor java.awt.event java.awt Java. Program kalkulator untuk antarmuka grafis hanya dapat menghitung penambahan, pengurangan, multiplikasi dan pembagian, dan dapat ada tanda kurung dalam persamaan. numerik dapat berupa desimal */kelas publik CalcGUI memperluas jframe {private static final long serialversionuid = 1l; Treeenode Private Hasil; Private String TextFieldString; Private Boolean Calcsuccess = true; Private Char Ops [] [] = {{{'>', '>', '<', '<', '>', '>', '<', '>', ',', '>', ',', '>', ',', '>', ',', ',', ',', ','>, '>', '<', '>', '<', '>', '<', '>', '<', '>', '<', '>', '>'}, {'>', '>', '>', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', 'E'}, {'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e'}, {'<', '<', '<', '<', 'e', ', ='},}; Stack <treenode> nodesstack = new stack <treenode> (); Stack <chorate> opsstack = new stack <chorate> (); publicstaticvoidMain (string [] args) {calcgui gui = calcgui baru (); gui.usergui (); } publicVoidUserGui () {this.setLayout (borderlayout baru ()); TextField TF = TextField baru ("Harap masukkan ekspresi, tekan Enter untuk memulai perhitungan ~", 40); tf.selectall (); tf.getText (); tf.addKeyListener(new KeyAdapter(){ publicvoidkeyPressed(KeyEvent e){ if(e.getKeyCode() == KeyEvent.VK_ENTER){ textFieldString = ((TextField)e.getComponent()).getText(); calcSuccess = true; resultTree = null; try{ resultTree = calc(textFieldString + ""); this.add (tf, borderlayout.north); this.setsize (500, 500); this.settitle ("calc gui"); this.setDefaultCloseOperation (jframe.exit_on_close); this.setresizable (true); this.setVisible (true); } private int levelheight = 60; Diameter int private = 25; publicVoidPaint (grafik g) {super.paint (g); if (calcsuccess) {if (resulttree! = null) {g.drawstring ("Hitung hasilnya:" + resultTree.value, 10, 80); int rootbeginx = this.getWidth () / 2; int rootbeginy = 100; Titik p = titik baru (rootbeginx, rootbeginy); drawtree (g, resulttree, p, this.getWidth () / 2 - 20, p); }} else {g.setColor (color.red); G.DrawString ("Sintaks ekspresi salah!", 10, 80); }} PrivatevoidDrawCircle (grafik g, titik p, int r) {g.drawoval (px - r, py - r, r * 2, r * 2); } PrivatevoidDrawTree (Graphics G, Treeenode Node, Point PME, Int Width, Point PFather) {if (node == null) return; // System.out.println ("Dalam 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); } else {g.setColor (color.black); g.drawstring (string.ValueOf (node.value), pme.x - diameter / 2, pme.y); } drawtree (g, node.lft, titik baru (pme.x - lebar / 2, pme.y + levelheight), lebar / 2, pme); drawtree (g, node.rt, titik baru (pme.x + lebar / 2, pme);} public treenode calc (string instruct) melempar pengecualian {opsstack.push ('#'); stringBuilder buf = new StringBuilder (); int i = 0; while (i <instr.length () {) {i oP () {i oP (i neP (i); instr.charat (i) == '.') {// Number buf.delete (0, buf.length ()); Double.parsedouble (Buf.ToString ()); if OpsStack.isempty ()) Lemparkan pengecualian baru ("Ada terlalu sedikit operator!"); Break; "Tidak ada operator pencocokan:" OP); Default: Operator Ilegal: " + OP); nilai; string publik () {out (ini);Meringkaskan
Di atas adalah 200 baris kode Java yang diperkenalkan oleh editor untuk menulis program kalkulator. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke wulin.com!