个人技术流程(四则运算)--马伟杰

**个人开发流程**(四则运算)

 

需求:

 

编写一个简单可视化的界面来对输入的数据进行简单四则运算

 

开发工具:

 

`Eclipse

 

分析:

 

1、通过Java Gui 编写computer 来完成可视化界面

 

2、通过calculation类来完成计算器的计算功能

 

**完整代码如下**:

 

```java

    package Example01;

 

import javax.swing.JButton;

import java.awt.Graphics;

import java.awt.FlowLayout;

import javax.swing.JFrame;

import javax.swing.JTextField;

import java.awt.Color;

import java.awt.Container;

import java.awt.Dimension;

import javax.swing.JPanel;

import java.awt.Font;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

public class computer extends JFrame {

    computer() {

        super("简易计算器");

        Font f = new Font("黑体", 30, 30);

        JTextField jt1 = new JTextField(null);

        JTextField jt2 = new JTextField(null);

        jt1.setFont(f);

        jt2.setFont(f);

        jt1.setHorizontalAlignment(JTextField.RIGHT);

        jt2.setHorizontalAlignment(JTextField.RIGHT);

        Container c = getContentPane();

        c.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));

        c.add(jt1);

        c.add(jt2);

        jt1.setPreferredSize(new Dimension(370, 70));

        jt2.setPreferredSize(new Dimension(370, 75));

        jt1.setEditable(false);

        jt2.setEditable(false);

        JButton jb[] = new JButton[16];

        for (int j = 0; j < 16; j++) {

            jb[j] = new JButton();

            jb[j].setBackground(Color.WHITE);

            jb[j].setFocusable(false);

            jb[j].setPreferredSize(new Dimension(90, 90));

            jb[j].setFont(f);

            c.add(jb[j]);

        }

        this.setResizable(false);

        //对各个按钮的名称赋值

        jb[0].setText("+");

        jb[1].setText("-");

        jb[2].setText("*");

        jb[3].setText("/");

        jb[4].setText("1");

        jb[5].setText("2");

        jb[6].setText("3");

        jb[7].setText("C");

        jb[7].setBackground(Color.ORANGE);

        jb[8].setText("4");

        jb[9].setText("5");

        jb[10].setText("6");

        jb[11].setText("0");

        jb[12].setText("7");

        jb[13].setText("8");

        jb[14].setText("9");

        jb[15].setText("=");

 

        JButton Button_num[] = {

            jb[4],

            jb[5],

            jb[6],

            jb[8],

            jb[9],

            jb[10],

            jb[11],

            jb[12],

            jb[13],

            jb[14]

        };

        for (int i = 0; i < Button_num.length; i++) {

            Button_num[i].addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    JButton action_Button = (JButton) e.getSource();

                    jt2.setText(jt2.getText() + action_Button.getText());

                }

            });

        }

        for (int j = 0; j < 4; j++) {

            jb[j].addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    String s = jt2.getText();

                    char ch = s.charAt(s.length() - 1);

 

                    if (ch == '+' || ch == '-' || ch == '*' || ch == '/')((JButton) e.getSource()).setEnabled(false);

                    else {

                        jt1.setText(jt2.getText());

                        jt2.setText(((JButton) e.getSource()).getText());

                    }

 

                }

            });

        }

        jb[7].addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                jt1.setText(null);

                jt2.setText(null);

            }

        }

 

        );

        jb[15].addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                try {

                    String Calculate_String = jt1.getText() + jt2.getText();

                    int result = calculation.result(Calculate_String);

                    jt1.setText(null);

                    jt2.setText(Integer.toString(result));

                } catch(ArithmeticException ex) {

                    jt1.setText(null);

                    jt2.setText("ERROR");

                }

            }

        });

    }

    public static void main(String args[]) {

        computer app = new computer();

        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        app.setSize(400, 580);

        app.setVisible(true);

    }

}

 

 

package Example01;

 

//再定义一个计算类calculation.java:

public class calculation {

  calculation() {};

  boolean is_operator(char ch) {

      if (ch == '+' || ch == '-' || ch == '*' || ch == '/') return true;

      else return false;

  }

  static int result(String s) {

      String ch[] = {

          "+",

          "-",

          "*",

          "/"

      };

      int i = 0;

      int index;

      while (s.indexOf(ch[i]) == -1 && i < 4) {

          i++;

      }

      if (i == 4) return - 1;

      else index = s.indexOf(ch[i]);

      String s1 = s.substring(0, index);

      String s2 = s.substring(index + 1, s.length());

      if (i == 0) return Integer.parseInt(s1) + Integer.parseInt(s2);

      if (i == 1) return Integer.parseInt(s1) - Integer.parseInt(s2);

      if (i == 2) return Integer.parseInt(s1) * Integer.parseInt(s2);

      if (i == 3 && Integer.parseInt(s2) != 0) return Integer.parseInt(s1) / Integer.parseInt(s2);

      else if (i == 3 && Integer.parseInt(s2) == 0) {

          throw new ArithmeticException();

      }

      return - 1;

  }

}

 

```
原文地址:https://www.cnblogs.com/tqz521127/p/14647051.html