现在的位置: 首页 > 综合 > 正文

本人自制的计算器(附代码)大家帮忙看看有哪些地方不足

2013年08月26日 ⁄ 综合 ⁄ 共 6300字 ⁄ 字号 评论关闭

本人自制的计算器(附代码)大家帮忙看看有哪些地方不足!

 

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class MyCounter extends JFrame {

 JButton b1 = new JButton("1");
 JButton b2 = new JButton("2");
 JButton b3 = new JButton("3");
 JButton b4 = new JButton("4");
 JButton b5 = new JButton("5");
 JButton b6 = new JButton("6");
 JButton b7 = new JButton("7");
 JButton b8 = new JButton("8");
 JButton b9 = new JButton("9");
 JButton b0 = new JButton("0");
 JButton a1 = new JButton("+");
 JButton a2 = new JButton("-");
 JButton a3 = new JButton("*");
 JButton a4 = new JButton("/");
 JButton a5 = new JButton("=");
 JButton a6 = new JButton(".");
 JButton a7 = new JButton("+/-");
 JButton a8 = new JButton("sqrt");
 JButton a9 = new JButton("CE");
 JButton a10 = new JButton("C");

 JTextField jft = new JTextField(20);
 JPanel jp1 = new JPanel();
 JPanel jp2 = new JPanel();

 JMenuBar jmb = new JMenuBar();
 JMenu jm1 = new JMenu("编辑(E)");
 JMenu jm2 = new JMenu("查看(V)");
 JMenu jm3 = new JMenu("帮助(H)");

 JMenuItem jmi1 = new JMenuItem("复制(C) Ctrl+C");
 JMenuItem jmi2 = new JMenuItem("粘贴(V) Ctrl+V");

 JCheckBoxMenuItem jmi3 = new JCheckBoxMenuItem("标准型(T)");
 JCheckBoxMenuItem jmi4 = new JCheckBoxMenuItem("科学型(S)");
 JCheckBoxMenuItem jmi5 = new JCheckBoxMenuItem("数学分组(I)");

 JMenuItem jmi6 = new JMenuItem("帮助主题(H)");
 JMenuItem jmi7 = new JMenuItem("关于计算器(A)");

 MyActionListener mal = new MyActionListener();
 AirthListener al = new AirthListener();
 JMenuListener jml = new JMenuListener();

 public MyCounter() {
  Container c = getContentPane();
  this.setTitle("JAVA计算器");
  this.setSize(240, 230);
  this.setLayout(new BorderLayout());
  this.setLocation(400, 250);
  this.setResizable(false);
  jft.setEditable(false);

  jp2.setLayout(new GridLayout(5, 4));
  
  jp1.add(jft);
  jft.setText("0");

  jp2.add(b7);
  jp2.add(b8);
  jp2.add(b9);
  jp2.add(a4);
  jp2.add(b4);
  jp2.add(b5);
  jp2.add(b6);
  jp2.add(a3);
  jp2.add(b1);
  jp2.add(b2);
  jp2.add(b3);
  jp2.add(a2);
  jp2.add(b0);
  jp2.add(a1);
  jp2.add(a5);
  jp2.add(a8);
  jp2.add(a6);
  jp2.add(a7);
  jp2.add(a8);
  jp2.add(a9);
  jp2.add(a10);

  c.add(jp1, BorderLayout.NORTH);
  c.add(jp2, BorderLayout.CENTER);

  jm1.add(jmi1);
  jm1.add(jmi2);

  jm2.add(jmi3);
  jm2.add(jmi4);
  jm2.add(jmi5);

  jm3.add(jmi6);
  jm3.add(jmi7);

  jmb.add(jm1);
  jmb.add(jm2);
  jmb.add(jm3);

  this.setJMenuBar(jmb);

  b1.addActionListener(mal);
  b2.addActionListener(mal);
  b3.addActionListener(mal);
  b4.addActionListener(mal);
  b5.addActionListener(mal);
  b6.addActionListener(mal);
  b7.addActionListener(mal);
  b8.addActionListener(mal);
  b9.addActionListener(mal);
  b0.addActionListener(mal);
  a6.addActionListener(mal);

  a1.addActionListener(al);
  a2.addActionListener(al);
  a3.addActionListener(al);
  a4.addActionListener(al);
  a5.addActionListener(al);
  a7.addActionListener(al);
  a8.addActionListener(al);
  a9.addActionListener(al);
  a10.addActionListener(al);

  jmi1.addActionListener(jml);
  jmi2.addActionListener(jml);

 }

 // 第一个数,第二个数,结果
 double fnum=0, snum=0, resualt=0;
 boolean flag = false;
 String fn = "";
 String sn = "";
 int ysf;
 String copyText;
 

 class MyActionListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   if (flag == false) {
    String f = ((JButton) e.getSource()).getText();
    fn += f;
    jft.setText(fn);
    int cc = 0;
    for (int i = 0; i < fn.length(); i++) {
     char c = jft.getText().charAt(i);
     if (c == '.') {
      cc++;
     }
    }
    if (cc > 1) {
     jft.setText("输入有误");
     flag = false;
     fnum = 0;
     fn = "";
    }
    fnum = Double.parseDouble(fn);
   }

   if (flag == true) {
    String s = ((JButton) e.getSource()).getText();
    sn += s;
    jft.setText(sn);
    int cc = 0;
    for (int i = 0; i < sn.length(); i++) {
     char c = jft.getText().charAt(i);
     if (c == '.') {
      cc++;
     }
    }
    if (cc > 1) {
     jft.setText("输入有误");
     flag = false;
     fnum = 0;
     snum = 0;
     fn = "";
     sn = "";
    }
    snum = Double.parseDouble(sn);
   }
  }
 }

 class AirthListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   if (e.getSource() == a1) {
    if(snum!=0)
    {
     fnum+=snum;
     sn="";
     snum=0;
     String sfnum = Double.toString(fnum);
     jft.setText(sfnum);
    }
    flag = true;
    ysf = 1;
   }
   if (e.getSource() == a2) {
    if(snum!=0)
    {
     fnum-=snum;
     sn="";
     snum=0;
     String sfnum = Double.toString(fnum);
     jft.setText(sfnum);
    }
    flag = true;
    ysf = 2;
   }
   if (e.getSource() == a3) {
    if(snum!=0)
    {
     fnum*=snum;
     sn="";
     snum=0;
     String sfnum = Double.toString(fnum);
     jft.setText(sfnum);
    }
    flag = true;
    ysf = 3;
   }
   if (e.getSource() == a4) {
    if(snum!=0)
    {
     fnum/=snum;
     sn="";
     snum=0;
     String sfnum = Double.toString(fnum);
     jft.setText(sfnum);
    }
    flag = true;
    ysf = 4;
   }
   if (e.getSource() == a7) {
    if (flag == false) {
     String fu = jft.getText();
     String fu1 = "-" + fu;
     jft.setText(fu1);
     fnum = Double.parseDouble(fu1);
    } else {
     String fu = jft.getText();
     String fu1 = "-" + fu;
     jft.setText(fu1);
     snum = Double.parseDouble(fu1);
    }
   }
   if (e.getSource() == a8) {
    jft.setText(jft.getText());
    Double d = Math.sqrt(fnum);
    String sqrt = d.toString();
    jft.setText(sqrt);
    flag = false;
    fnum = 0;
    fn = "";
   }
   if (e.getSource() == a9) {
    jft.setText("0");
    flag = false;
    fnum = 0;
    snum = 0;
    fn = "";
    sn = "";
   }
   if (e.getSource() == a10) {
    jft.setText("0");
    flag = false;
    fnum = 0;
    snum = 0;
    fn = "";
    sn = "";
   }
   if (e.getSource() == a5) {
    String r;
    switch (ysf) {
    case 1:
     resualt = fnum + snum;
     fnum = resualt;
     r = Double.toString(resualt);
     jft.setText(r);
     break;

    case 2:
     resualt = fnum - snum;
     fnum = resualt;
     r = Double.toString(resualt);
     jft.setText(r);
     break;

    case 3:
     resualt = fnum * snum;
     fnum = resualt;
     r = Double.toString(resualt);
     jft.setText(r);
     break;

    case 4:
     if (snum != 0) {
      resualt = fnum / snum;
      fnum = resualt;
      r = Double.toString(resualt);
      jft.setText(r);
      break;
     } else
      jft.setText("错误:除数不能为0");

    }
    snum=0;
    sn="";
   }
  }
 }

 class JMenuListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
   if (e.getSource() == jmi1) {
     copyText = jft.getText();
   }
   if (e.getSource() == jmi2) {
    if (flag == false) {
     if (copyText != null) {
      fnum = Double.parseDouble(copyText);
      jft.setText(copyText);
     }
    } else {
     if (copyText != null) {
      snum = Double.parseDouble(copyText);
      jft.setText(copyText);
     }
    }

   }
  }
 }

}

public class MyCounterTest {
 public static void main(String[] args) {
  MyCounter mc = new MyCounter();
  mc.setVisible(true);
 }
}

大家帮忙看看有哪些地方不足!  

本人菜鸟!GUI 刚上了两小节课 老师就让做计算器!

请大家指教!!

做的很菜 也很业余!

抱歉!评论已关闭.