**个人开发流程**(四则运算)
需求:
编写一个简单可视化的界面来对输入的数据进行简单四则运算
开发工具:
`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; } } ```