⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myjsq.java

📁 一个为了能下载东西所以才上传的东西··建议没必要下载··浪费时间哦
💻 JAVA
字号:
import java.awt.*;
import java.text.*;
import java.awt.event.*;
public class MyJSQ extends Frame implements ActionListener{//定义变量和相关按钮
  boolean clickable;
  int i;
  double zhongjian,answerd;//用来保存double型数据的中间值(zhongjian)和最后结果(answerd)
  DecimalFormat jingdu; //设置数据输出精度
  short key = -1, prekey = -1;//key用来保存当前进行何种运算,prekey用来保存前次进行何种运算
  Button a[];
  private Button jia=new Button("+");
  private Button jian=new Button("-");
  private Button cheng=new Button("*");
  private Button chu=new Button("/");
  private Button point=new Button(".");
  private Button dengyu=new Button("=");
  private Button qingling=new Button("清零");
  private Button back=new Button("←");
  private Button baifen=new Button("%");
  private Button fu=new Button("+/-");
  private TextField input =new TextField();
  public class WindowCloser extends WindowAdapter{
    public void windowClosing(WindowEvent we){System.exit(0);}
  }
  //设计面板
  private void setup(){
     a = new Button[10];
    for (int i = 0; i < a.length; i++) 
      a[i] = new Button(Integer.toString(i));
    qingling.setForeground(new Color(250,0,0));
    Panel shuzi=new Panel();
    shuzi.setLayout(new GridLayout(4,3));
    for(int i=1;i<=9;i++)
    shuzi.add(a[i]);
    shuzi.add(a[0]);shuzi.add(point);shuzi.add(dengyu);
    Panel yunsuanfu=new Panel();
    yunsuanfu.setLayout(new GridLayout(4,1));
    yunsuanfu.add(jia);yunsuanfu.add(jian);yunsuanfu.add(cheng);yunsuanfu.add(chu);
    Panel fuhao =new Panel();
    fuhao.setLayout(new GridLayout(4,1));
    fuhao.add(qingling);fuhao.add(back);fuhao.add(fu);fuhao.add(baifen);
    Panel zonghe2=new Panel();
    zonghe2.setLayout(new GridLayout(1,2));
    zonghe2.add(yunsuanfu);zonghe2.add(fuhao);
    Panel zonghe3=new Panel();
    zonghe3.setLayout(new GridLayout(1,2));
    zonghe3.add(shuzi);zonghe3.add(zonghe2);
    setLayout(new BorderLayout());
    add("North",input);add("Center",zonghe3);
  }
  //构造方法
  public MyJSQ(){
    super("计算器");
    setup();
    jingdu = new DecimalFormat("0.##############"); //设置数据输出精度(对于double型值)
    clickable = true;
    answerd = 0;
    //增添事件监听
    for(int i=0;i<=9;i++)
     a[i].addActionListener(this);
    jia.addActionListener(this);
    jian.addActionListener(this);
    cheng.addActionListener(this);
    chu.addActionListener(this);
    point.addActionListener(this);
    dengyu.addActionListener(this);
    qingling.addActionListener(this);
    baifen.addActionListener(this);
    back.addActionListener(this);
    fu.addActionListener(this);
    addWindowListener(new WindowCloser());
    pack();
    show();
  }
  //相关事件响应
  public void actionPerformed(ActionEvent e){
    boolean sign = false; //判断是否是double型数参与运算,是为true,不是为false
    Object temp = e.getSource();
    try {
      //如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后
      for (int i = 0; i <= 9; i++)
        if (temp == a[i] && clickable == true)
          input.setText(input.getText() + Integer.toString(i));
          //按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'
      if (temp == point && clickable == true) {
        boolean isDian = false;
        if (input.getText().length() == 0)
          isDian = true;
        for (int i = 0; i < input.getText().length(); i++)
          if ('.' == input.getText().charAt(i)) {
            isDian = true;
            break;
          }
        if (isDian == false)
          input.setText(input.getText() + ".");
      }
      if ( (temp == jia || temp == jian || temp == cheng ||
            temp == chu) && clickable == true) {
        //'+'操作
        if (temp == jia) {
          switch (prekey) {
            case 0:
              answerd += Double.parseDouble(input.getText());
              break;
            case 1:
              answerd -= Double.parseDouble(input.getText());
              break;
            case 2:
              answerd *= Double.parseDouble(input.getText());
              break;
            case 3:
              if (Double.parseDouble(input.getText()) == 0) {
                input.setText("除数不能为零");
                clickable = false;
              }
              else
                answerd /= Double.parseDouble(input.getText());
              break;
            default:
              answerd = Double.parseDouble(input.getText());
          }
          input.setText("");
          prekey = key = 0;
        }
        //'-'操作
        if (temp == jian) {
          switch (prekey) {
            case 0:
              answerd += Double.parseDouble(input.getText());
              break;
            case 1:
              answerd -= Double.parseDouble(input.getText());
              break;
            case 2:
              answerd *= Double.parseDouble(input.getText());
              break;
            case 3:
              if (Double.parseDouble(input.getText()) == 0) {
                input.setText("除数不能为零");
                clickable = false;
              }
              else
                answerd /= Double.parseDouble(input.getText());
              break;
            default:
              answerd = Double.parseDouble(input.getText());
          }
          input.setText("");
          prekey = key = 1;
        }
        //'*'操作
        if (temp == cheng) {
          switch (prekey) {
            case 0:
              answerd += Double.parseDouble(input.getText());
              break;
            case 1:
              answerd -= Double.parseDouble(input.getText());
              break;
            case 2:
              answerd *= Double.parseDouble(input.getText());
              break;
            case 3:
              if (Double.parseDouble(input.getText()) == 0) {
                input.setText("除数不能为零");
                clickable = false;
              }
              else
                answerd /= Double.parseDouble(input.getText());
              break;
            default:
              answerd = Double.parseDouble(input.getText());
          }
          input.setText("");
          prekey = key = 2;
        }
        //'/'操作
        if (temp == chu) {
          switch (prekey) {
            case 0:
              answerd += Double.parseDouble(input.getText());
              break;
            case 1:
              answerd -= Double.parseDouble(input.getText());
              break;
            case 2:
              answerd *= Double.parseDouble(input.getText());
              break;
            case 3:
              if (Double.parseDouble(input.getText()) == 0) {
                input.setText("除数不能为零");
                clickable = false;
              }
              else
                answerd /= Double.parseDouble(input.getText());
              break;
            default:
              answerd = Double.parseDouble(input.getText());
          }
          input.setText("");
          prekey = key = 3;
        }
      }
      //'='操作
      if (temp == dengyu && clickable == true) {
        //如果连续按'=',则进行连续运算
        if (prekey == 5) {
          if (key == 0) {
            answerd += zhongjian;
            input.setText(jingdu.format(answerd));
          }
          if (key == 1) {
            answerd -= zhongjian;
            input.setText(jingdu.format(answerd));
          }
          if (key == 2) {
            answerd *= zhongjian;
            input.setText(jingdu.format(answerd));
          }
          if (key == 3) {
            if (Double.parseDouble(input.getText()) == 0) {
              input.setText("除数不能为零");
              clickable = false;
            }
            else {
              answerd /= zhongjian;
              input.setText(jingdu.format(answerd));
            }
          }
        }
        else {
          zhongjian = Double.parseDouble(input.getText());
          if (key == 0) {
            prekey = -1;
            answerd += Double.parseDouble(input.getText());
            input.setText(jingdu.format(answerd));
          }
          if (key == 1) {
            prekey = -1;
            answerd -= Double.parseDouble(input.getText());
            input.setText(jingdu.format(answerd));
          }
          if (key == 2) {
            prekey = -1;
            answerd *= Double.parseDouble(input.getText());
            input.setText(jingdu.format(answerd));
          }
          if (key == 3) {
            prekey = -1;
            if (Double.parseDouble(input.getText()) == 0) {
              input.setText("除数不能为零");
              clickable = false;
            }
            else {
              answerd /= Double.parseDouble(input.getText());
              input.setText(jingdu.format(answerd));
            }
          }
        }
        prekey = 5;
      }
      //'%'操作,对第二个操作数除以100
      if (temp == baifen && clickable == true) {
        if (answerd == 0) {
          String s = input.getText();
          input.setText(s);
        }
        else {
          boolean isDian = false;
          for (int i = 0; i < input.getText().length(); i++)
            if ('.' == input.getText().charAt(i)) {
              isDian = true;
              break;
            }
          //如果是double数,除100
          if (isDian == true) {
            double dtemp = Double.parseDouble(input.getText());
            dtemp = dtemp / 100.0;
            input.setText(Double.toString(dtemp));
          }
          else {
            //如果是int数但能被100整除,则去掉末尾两个零
            if (Integer.parseInt(input.getText()) % 100 == 0) {
              int itemp = Integer.parseInt(input.getText());
              itemp /= 100;
              input.setText(Integer.toString(itemp));
            }
            //如果是int数,但不能被100整除,则按double数处理
            else {
              double dtemp = Double.parseDouble(input.getText());
              dtemp = dtemp / 100.0;
              input.setText(Double.toString(dtemp));
            }
          }
        }
      }
      
     
      //按下'+/-'按钮时处理
      if (temp == fu && clickable == true) {
        boolean isNumber = true;
        String s = input.getText();
        for (int i = 0; i < s.length(); i++)
          if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' ||
                 s.charAt(i) == '-')) {
            isNumber = false;
            break;
          }
        if (isNumber == true) {
          //如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉
          if (s.charAt(0) == '-') {
            input.setText("");
            for (int i = 1; i < s.length(); i++) {
              char a = s.charAt(i);
              input.setText(input.getText() + a);
            }
          }
          //如果当前字符串第一个字符不是符号,则添加一个符号在首字母处
          else
            input.setText('-' + s);
        }
      }
      

      //按下'←'键,利用循环将当前字符串中的最后一个字母删除
      if (temp == back && clickable == true) {
        String s = input.getText();
        input.setText("");
        for (int i = 0; i < s.length() - 1; i++) {
          char a = s.charAt(i);
          input.setText(input.getText() + a);
        }
      }
   
      //按下'qingling'按钮,文本框内数据清除,同时zhongjian,answerd清0
      if (temp == qingling) {
        zhongjian=answerd = 0;
        input.setText("");
        clickable = true;
      }
     
    }
    //输入中如果有操作非法,比如按下两次'+',捕获异常
    catch (Exception ae) {
      input.setText("操作非法");
      clickable = false;
    }
     input.requestFocus();
  }

  //主函数
  public static void main(String args[])
    { MyJSQ ming=new MyJSQ();}

}
    
    
    
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -