• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. Java編寫計(jì)算器的的常見做法

        時(shí)間:2024-08-12 10:30:43 JAVA認(rèn)證 我要投稿
        • 相關(guān)推薦

        Java編寫計(jì)算器的的常見做法

          用java怎么編寫簡易計(jì)算器?有哪幾種編寫方法呢?下面跟yjbys小編一起來看看吧!

          界面設(shè)計(jì):用一個(gè)JPanel1 布局是網(wǎng)格 (4*4),分別放置數(shù)字和功能鍵,再用一個(gè)JPanel2 放置顯示區(qū)(JTextArea)1和2,在把JPanel1放入JPanel2中,JPanel2 放入JFrame中;

          計(jì)算:

          有數(shù)字按鈕按下時(shí),把相應(yīng)的值讀入顯示區(qū)里,當(dāng)有功能鍵按下時(shí),顯示區(qū)清空,在讀入第二操作數(shù),當(dāng)有”=”按下時(shí),調(diào)用相應(yīng)的函數(shù)計(jì)算結(jié)果,并顯示。并激活相應(yīng)的探聽器。

          方法1:

          import java.awt.*;

          import java.awt.event.*;

          public class MyCalculator {

          private Frame f;

          private TextField tf = new TextField(30);

          private long result;

          private boolean append=false;

          private char operator='=';

          private Button[] btn=new Button[15];

          public MyCalculator() {

          initComponent();

          }

          private void initComponent() {

          f = new Frame("My Calculator V1.0");

          f.setLayout(new BorderLayout()); //The frame uses BorderLayout

          f.addWindowListener(new WindowAdapter() {

          public void windowClosing(WindowEvent evt) {

          System.exit(0);

          }

          });

          Panel centerPanel = new Panel();

          centerPanel.setLayout(new GridLayout(5, 3)); //The panel uses GridLayout

          NumberListener nl=new NumberListener();

          OperatorListener ol=new OperatorListener();

          btn[10]=new Button("+");

          btn[11]=new Button("-");

          btn[12]=new Button("*");

          btn[13]=new Button("/");

          btn[14]=new Button("=");

          for (int i=0;i<=9;i++){

          btn[i]=new Button(String.valueOf(i));

          centerPanel.add(btn[i]);

          btn[i].addActionListener(nl);

          if (i%2==1){

          centerPanel.add(btn[(i+19)/2]);

          btn[(i+19)/2].addActionListener(ol);

          }

          }

          f.add(centerPanel, BorderLayout.CENTER);

          Panel northPanel = new Panel();

          tf.setEditable(false);

          northPanel.add(tf);

          f.add(northPanel, BorderLayout.NORTH);

          }

          public void go() {

          f.pack();

          f.setVisible(true);

          }

          public static void main(String[] args) {

          new MyCalculator().go();

          }

          /**

          *采用成員內(nèi)部類方式,實(shí)現(xiàn)探聽器接口,方便訪問主類內(nèi)類內(nèi)部成員。

          *此類負(fù)責(zé)數(shù)字按鈕Action事件監(jiān)聽和處理

          */

          class NumberListener implements ActionListener{

          public void actionPerformed(ActionEvent e){

          if (!append) {

          tf.setText("");

          append=true;

          }

          String s=tf.getText();

          s+=e.getActionCommand();

          tf.setText(s);

          if (!btn[10].isEnabled()){

          for(int i=10;i<=14;i++) btn[i].setEnabled(true);

          }

          }

          }

          /**

          * 成員內(nèi)部類,負(fù)責(zé)操作符按鈕的事件處理

          */

          class OperatorListener implements ActionListener{

          public void actionPerformed(ActionEvent e){

          if (!append) return;

          for(int i=10;i<=14;i++) btn[i].setEnabled(false);

          String s=tf.getText();

          long num=Long.parseLong(s);//get the number of textfield

          append=false; //set append

          switch(operator){

          case '+':result+=num;break;

          case '-':result-=num;break;

          case '*':result*=num;break;

          case '/':{

          if (num==0) result=0;

          else result/=num;

          break;

          }

          case '=':result=num;break;

          }

          tf.setText(String.valueOf(result));

          //set the value of result to textfield

          String op=e.getActionCommand();

          operator=op.charAt(0); // set operator

          }

          }

          }

          方法2:

          ——————————————————————————————————————————————

          package wanwa;

          import java.util.*;

          public class calc {

          public static void main(String[] args) {

          Scanner input = new Scanner(System.in);

          System.out.println("*****************簡易計(jì)算器****************");

          System.out.println("*/t/t/t/t/t*");

          System.out.println("* 使用說明: 1.加法 2.減法 3.乘法 4.除法 *");

          System.out.println("*/t/t/t/t/t*");

          System.out.println("*****************************************");

          for(int i=0;i<100;i++){

          System.out.print("/n請(qǐng)選擇運(yùn)算規(guī)則:");

          int num = input.nextInt();

          switch(num){

          case 1:

          System.out.println("/n******你選擇了加法******/n");

          System.out.print("請(qǐng)輸入第1個(gè)加數(shù):");

          int jiashu1 = input.nextInt();

          System.out.print("請(qǐng)輸入第2個(gè)加數(shù):");

          int jiashu2 = input.nextInt();

          System.out.println("運(yùn)算結(jié)果為:" + jiashu1 + " + " + jiashu1 + " = " + (jiashu1 + jiashu2));

          break;

          case 2:

          System.out.println("/n******你選擇了減法******/n");

          System.out.print("請(qǐng)輸入被減數(shù):");

          int jianshu1 = input.nextInt();

          System.out.print("請(qǐng)輸入減數(shù):");

          int jianshu2 = input.nextInt();

          System.out.println("運(yùn)算結(jié)果為:" + jianshu1 + " - " + jianshu2 + " = " + (jianshu1 - jianshu2));

          break;

          case 3:

          System.out.println("/n******你選擇了乘法******/n");

          System.out.print("請(qǐng)輸入第1個(gè)因數(shù):");

          int chengfa1 = input.nextInt();

          System.out.print("請(qǐng)輸入第2個(gè)因數(shù):");

          int chengfa2 = input.nextInt();

          System.out.println("運(yùn)算結(jié)果為:" + chengfa1 + " * " + chengfa2 + " = " + (chengfa1 * chengfa2));

          break;

          case 4:

          System.out.println("/n******你選擇了除法******/n");

          System.out.print("請(qǐng)輸入被除數(shù):");

          double chufa1 = input.nextInt();

          System.out.print("請(qǐng)輸入除數(shù):");

          double chufa2 = input.nextInt();

          System.out.println("運(yùn)算結(jié)果為:" + chufa1 + " / " + chufa2 + " = " + (chufa1 / chufa2) + " 余 " + (chufa1 % chufa2));

          break;

          default:

          System.out.println("/n你的選擇有錯(cuò),請(qǐng)重新選擇!");

          break;

          }

          }

          }

          }

          第三種寫法:

          ——————————————————————————————————————————————

          package wanwa;

          import java.awt.*;

          import java.awt.event.*;

          import javax.swing.*;

          public class Calculator extends JFrame {

          private Container container;

          private GridBagLayout layout;

          private GridBagConstraints constraints;

          private JTextField displayField;// 計(jì)算結(jié)果顯示區(qū)

          private String lastCommand;// 保存+,-,*,/,=命令

          private double result;// 保存計(jì)算結(jié)果

          private boolean start;// 判斷是否為數(shù)字的開始

          public Calculator() {

          super("Calculator");

          container = getContentPane();

          layout = new GridBagLayout();

          container.setLayout(layout);

          constraints = new GridBagConstraints();

          start = true;

          result = 0;

          lastCommand = "=";

          displayField = new JTextField(20);

          displayField.setHorizontalAlignment(JTextField.RIGHT);

          constraints.gridx = 0;

          constraints.gridy = 0;

          constraints.gridwidth = 4;

          constraints.gridheight = 1;

          constraints.fill = GridBagConstraints.BOTH;

          constraints.weightx = 100;

          constraints.weighty = 100;

          layout.setConstraints(displayField, constraints);

          container.add(displayField);

          ActionListener  = new InsertAction();

          ActionListener command = new CommandAction();

          // addButton("Backspace", 0, 1, 2, 1, );

          // addButton("CE", 2, 1, 1, 1, );

          // addButton("C", 3, 1, 1, 1, );

          addButton("7", 0, 2, 1, 1, );

          addButton("8", 1, 2, 1, 1, );

          addButton("9", 2, 2, 1, 1, );

          addButton("/", 3, 2, 1, 1, command);

          addButton("4", 0, 3, 1, 1, );

          addButton("5", 1, 3, 1, 1, );

          addButton("6", 2, 3, 1, 1, );

          addButton("*", 3, 3, 1, 1, command);

          addButton("1", 0, 4, 1, 1, );

          addButton("2", 1, 4, 1, 1, );

          addButton("3", 2, 4, 1, 1, );

          addButton("-", 3, 4, 1, 1, command);

          addButton("0", 0, 5, 1, 1, );

          // addButton("+/-", 1, 5, 1, 1, );// 只顯示"-"號(hào),"+"沒有實(shí)用價(jià)值

          addButton(".", 2, 5, 1, 1, );

          addButton("+", 3, 5, 1, 1, command);

          addButton("=", 0, 6, 4, 1, command);

          this.setResizable(false);

          setSize(180, 200);

          setVisible(true);

          }

          private void addButton(String label, int row, int column, int with,

          int height, ActionListener listener) {

          JButton button = new JButton(label);

          constraints.gridx = row;

          constraints.gridy = column;

          constraints.gridwidth = with;

          constraints.gridheight = height;

          constraints.fill = GridBagConstraints.BOTH;

          button.addActionListener(listener);

          layout.setConstraints(button, constraints);

          container.add(button);

          }

          private class InsertAction implements ActionListener {

          public void actionPerformed(ActionEvent event) {

          String input = event.getActionCommand();

          if (start) {

          displayField.setText("");

          start = false;

          if (input.equals("+/-"))

          displayField.setText(displayField.getText() + "-");

          }

          if (!input.equals("+/-")) {

          if (input.equals("Backspace")) {

          String str = displayField.getText();

          if (str.length() > 0)

          displayField.setText(str.substring(0, str.length() - 1));

          } else if (input.equals("CE") || input.equals("C")) {

          displayField.setText("0");

          start = true;

          } else

          displayField.setText(displayField.getText() + input);

          }

          }

          }

          private class CommandAction implements ActionListener {

          public void actionPerformed(ActionEvent evt) {

          String command = evt.getActionCommand();

          if (start) {

          lastCommand = command;

          } else {

          calculate(Double.parseDouble(displayField.getText()));

          lastCommand = command;

          start = true;

          }

          }

          }

          public void calculate(double x) {

          if (lastCommand.equals("+"))

          result += x;

          else if (lastCommand.equals("-"))

          result -= x;

          else if (lastCommand.equals("*"))

          result *= x;

          else if (lastCommand.equals("/"))

          result /= x;

          else if (lastCommand.equals("="))

          result = x;

          displayField.setText("" + result);

          }

          public static void main(String[] args) {

          Calculator calculator = new Calculator();

          calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

          }

          }

          第四種寫法:

          ——————————————————————————————————————————————

          package wanwa;

          import java.awt.*;

          import java.awt.event.*;

          import javax.swing.*;

          public class Calculator extends JFrame {

          private Container container;

          private GridBagLayout layout;

          private GridBagConstraints constraints;

          private JTextField displayField;// 計(jì)算結(jié)果顯示區(qū)

          private String lastCommand;// 保存+,-,*,/,=命令

          private double result;// 保存計(jì)算結(jié)果

          private boolean start;// 判斷是否為數(shù)字的開始

          public Calculator() {

          super("Calculator");

          container = getContentPane();

          layout = new GridBagLayout();

          container.setLayout(layout);

          constraints = new GridBagConstraints();

          start = true;

          result = 0;

          lastCommand = "=";

          displayField = new JTextField(20);

          displayField.setHorizontalAlignment(JTextField.RIGHT);

          constraints.gridx = 0;

          constraints.gridy = 0;

          constraints.gridwidth = 4;

          constraints.gridheight = 1;

          constraints.fill = GridBagConstraints.BOTH;

          constraints.weightx = 100;

          constraints.weighty = 100;

          layout.setConstraints(displayField, constraints);

          container.add(displayField);

          ActionListener  = new InsertAction();

          ActionListener command = new CommandAction();

          // addButton("Backspace", 0, 1, 2, 1, );

          // addButton("CE", 2, 1, 1, 1, );

          // addButton("C", 3, 1, 1, 1, );

          addButton("7", 0, 2, 1, 1, );

          addButton("8", 1, 2, 1, 1, );

          addButton("9", 2, 2, 1, 1, );

          addButton("/", 3, 2, 1, 1, command);

          addButton("4", 0, 3, 1, 1, );

          addButton("5", 1, 3, 1, 1, );

          addButton("6", 2, 3, 1, 1, );

          addButton("*", 3, 3, 1, 1, command);

          addButton("1", 0, 4, 1, 1, );

          addButton("2", 1, 4, 1, 1, );

          addButton("3", 2, 4, 1, 1, );

          addButton("-", 3, 4, 1, 1, command);

          addButton("0", 0, 5, 1, 1, );

          // addButton("+/-", 1, 5, 1, 1, );// 只顯示"-"號(hào),"+"沒有實(shí)用價(jià)值

          addButton(".", 2, 5, 1, 1, );

          addButton("+", 3, 5, 1, 1, command);

          addButton("=", 0, 6, 4, 1, command);

          this.setResizable(false);

          setSize(180, 200);

          setVisible(true);

          }

          private void addButton(String label, int row, int column, int with,

          int height, ActionListener listener) {

          JButton button = new JButton(label);

          constraints.gridx = row;

          constraints.gridy = column;

          constraints.gridwidth = with;

          constraints.gridheight = height;

          constraints.fill = GridBagConstraints.BOTH;

          button.addActionListener(listener);

          layout.setConstraints(button, constraints);

          container.add(button);

          }

          private class InsertAction implements ActionListener {

          public void actionPerformed(ActionEvent event) {

          String input = event.getActionCommand();

          if (start) {

          displayField.setText("");

          start = false;

          if (input.equals("+/-"))

          displayField.setText(displayField.getText() + "-");

          }

          if (!input.equals("+/-")) {

          if (input.equals("Backspace")) {

          String str = displayField.getText();

          if (str.length() > 0)

          displayField.setText(str.substring(0, str.length() - 1));

          } else if (input.equals("CE") || input.equals("C")) {

          displayField.setText("0");

          start = true;

          } else

          displayField.setText(displayField.getText() + input);

          }

          }

          }

          private class CommandAction implements ActionListener {

          public void actionPerformed(ActionEvent evt) {

          String command = evt.getActionCommand();

          if (start) {

          lastCommand = command;

          } else {

          calculate(Double.parseDouble(displayField.getText()));

          lastCommand = command;

          start = true;

          }

          }

          }

          public void calculate(double x) {

          if (lastCommand.equals("+"))

          result += x;

          else if (lastCommand.equals("-"))

          result -= x;

          else if (lastCommand.equals("*"))

          result *= x;

          else if (lastCommand.equals("/"))

          result /= x;

          else if (lastCommand.equals("="))

          result = x;

          displayField.setText("" + result);

          }

          public static void main(String[] args) {

          Calculator calculator = new Calculator();

          calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

          }

          }

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【Java編寫計(jì)算器的的常見做法】相關(guān)文章:

        Java怎么編寫Oracle存儲(chǔ)過程09-15

        Java怎么編寫走馬燈程序08-19

        java運(yùn)行常見異常舉例08-30

        Java編程常見問題匯總10-05

        Java中最常見的錯(cuò)誤盤點(diǎn)09-25

        常見日本料理做法09-14

        常見的日本料理做法10-09

        炸豬排飯的常見做法06-14

        常見韓國料理的極簡做法07-19

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 在线精品91青草国产在线观看 | 午夜色福利视频 | 午夜性色福利视频久久久久 | 一本大道香蕉中文在线视频一 | 亚洲人成网站在线观看69影院 | 亚洲欧美色中文字幕在线 |

            Java編寫計(jì)算器的的常見做法

              用java怎么編寫簡易計(jì)算器?有哪幾種編寫方法呢?下面跟yjbys小編一起來看看吧!

              界面設(shè)計(jì):用一個(gè)JPanel1 布局是網(wǎng)格 (4*4),分別放置數(shù)字和功能鍵,再用一個(gè)JPanel2 放置顯示區(qū)(JTextArea)1和2,在把JPanel1放入JPanel2中,JPanel2 放入JFrame中;

              計(jì)算:

              有數(shù)字按鈕按下時(shí),把相應(yīng)的值讀入顯示區(qū)里,當(dāng)有功能鍵按下時(shí),顯示區(qū)清空,在讀入第二操作數(shù),當(dāng)有”=”按下時(shí),調(diào)用相應(yīng)的函數(shù)計(jì)算結(jié)果,并顯示。并激活相應(yīng)的探聽器。

              方法1:

              import java.awt.*;

              import java.awt.event.*;

              public class MyCalculator {

              private Frame f;

              private TextField tf = new TextField(30);

              private long result;

              private boolean append=false;

              private char operator='=';

              private Button[] btn=new Button[15];

              public MyCalculator() {

              initComponent();

              }

              private void initComponent() {

              f = new Frame("My Calculator V1.0");

              f.setLayout(new BorderLayout()); //The frame uses BorderLayout

              f.addWindowListener(new WindowAdapter() {

              public void windowClosing(WindowEvent evt) {

              System.exit(0);

              }

              });

              Panel centerPanel = new Panel();

              centerPanel.setLayout(new GridLayout(5, 3)); //The panel uses GridLayout

              NumberListener nl=new NumberListener();

              OperatorListener ol=new OperatorListener();

              btn[10]=new Button("+");

              btn[11]=new Button("-");

              btn[12]=new Button("*");

              btn[13]=new Button("/");

              btn[14]=new Button("=");

              for (int i=0;i<=9;i++){

              btn[i]=new Button(String.valueOf(i));

              centerPanel.add(btn[i]);

              btn[i].addActionListener(nl);

              if (i%2==1){

              centerPanel.add(btn[(i+19)/2]);

              btn[(i+19)/2].addActionListener(ol);

              }

              }

              f.add(centerPanel, BorderLayout.CENTER);

              Panel northPanel = new Panel();

              tf.setEditable(false);

              northPanel.add(tf);

              f.add(northPanel, BorderLayout.NORTH);

              }

              public void go() {

              f.pack();

              f.setVisible(true);

              }

              public static void main(String[] args) {

              new MyCalculator().go();

              }

              /**

              *采用成員內(nèi)部類方式,實(shí)現(xiàn)探聽器接口,方便訪問主類內(nèi)類內(nèi)部成員。

              *此類負(fù)責(zé)數(shù)字按鈕Action事件監(jiān)聽和處理

              */

              class NumberListener implements ActionListener{

              public void actionPerformed(ActionEvent e){

              if (!append) {

              tf.setText("");

              append=true;

              }

              String s=tf.getText();

              s+=e.getActionCommand();

              tf.setText(s);

              if (!btn[10].isEnabled()){

              for(int i=10;i<=14;i++) btn[i].setEnabled(true);

              }

              }

              }

              /**

              * 成員內(nèi)部類,負(fù)責(zé)操作符按鈕的事件處理

              */

              class OperatorListener implements ActionListener{

              public void actionPerformed(ActionEvent e){

              if (!append) return;

              for(int i=10;i<=14;i++) btn[i].setEnabled(false);

              String s=tf.getText();

              long num=Long.parseLong(s);//get the number of textfield

              append=false; //set append

              switch(operator){

              case '+':result+=num;break;

              case '-':result-=num;break;

              case '*':result*=num;break;

              case '/':{

              if (num==0) result=0;

              else result/=num;

              break;

              }

              case '=':result=num;break;

              }

              tf.setText(String.valueOf(result));

              //set the value of result to textfield

              String op=e.getActionCommand();

              operator=op.charAt(0); // set operator

              }

              }

              }

              方法2:

              ——————————————————————————————————————————————

              package wanwa;

              import java.util.*;

              public class calc {

              public static void main(String[] args) {

              Scanner input = new Scanner(System.in);

              System.out.println("*****************簡易計(jì)算器****************");

              System.out.println("*/t/t/t/t/t*");

              System.out.println("* 使用說明: 1.加法 2.減法 3.乘法 4.除法 *");

              System.out.println("*/t/t/t/t/t*");

              System.out.println("*****************************************");

              for(int i=0;i<100;i++){

              System.out.print("/n請(qǐng)選擇運(yùn)算規(guī)則:");

              int num = input.nextInt();

              switch(num){

              case 1:

              System.out.println("/n******你選擇了加法******/n");

              System.out.print("請(qǐng)輸入第1個(gè)加數(shù):");

              int jiashu1 = input.nextInt();

              System.out.print("請(qǐng)輸入第2個(gè)加數(shù):");

              int jiashu2 = input.nextInt();

              System.out.println("運(yùn)算結(jié)果為:" + jiashu1 + " + " + jiashu1 + " = " + (jiashu1 + jiashu2));

              break;

              case 2:

              System.out.println("/n******你選擇了減法******/n");

              System.out.print("請(qǐng)輸入被減數(shù):");

              int jianshu1 = input.nextInt();

              System.out.print("請(qǐng)輸入減數(shù):");

              int jianshu2 = input.nextInt();

              System.out.println("運(yùn)算結(jié)果為:" + jianshu1 + " - " + jianshu2 + " = " + (jianshu1 - jianshu2));

              break;

              case 3:

              System.out.println("/n******你選擇了乘法******/n");

              System.out.print("請(qǐng)輸入第1個(gè)因數(shù):");

              int chengfa1 = input.nextInt();

              System.out.print("請(qǐng)輸入第2個(gè)因數(shù):");

              int chengfa2 = input.nextInt();

              System.out.println("運(yùn)算結(jié)果為:" + chengfa1 + " * " + chengfa2 + " = " + (chengfa1 * chengfa2));

              break;

              case 4:

              System.out.println("/n******你選擇了除法******/n");

              System.out.print("請(qǐng)輸入被除數(shù):");

              double chufa1 = input.nextInt();

              System.out.print("請(qǐng)輸入除數(shù):");

              double chufa2 = input.nextInt();

              System.out.println("運(yùn)算結(jié)果為:" + chufa1 + " / " + chufa2 + " = " + (chufa1 / chufa2) + " 余 " + (chufa1 % chufa2));

              break;

              default:

              System.out.println("/n你的選擇有錯(cuò),請(qǐng)重新選擇!");

              break;

              }

              }

              }

              }

              第三種寫法:

              ——————————————————————————————————————————————

              package wanwa;

              import java.awt.*;

              import java.awt.event.*;

              import javax.swing.*;

              public class Calculator extends JFrame {

              private Container container;

              private GridBagLayout layout;

              private GridBagConstraints constraints;

              private JTextField displayField;// 計(jì)算結(jié)果顯示區(qū)

              private String lastCommand;// 保存+,-,*,/,=命令

              private double result;// 保存計(jì)算結(jié)果

              private boolean start;// 判斷是否為數(shù)字的開始

              public Calculator() {

              super("Calculator");

              container = getContentPane();

              layout = new GridBagLayout();

              container.setLayout(layout);

              constraints = new GridBagConstraints();

              start = true;

              result = 0;

              lastCommand = "=";

              displayField = new JTextField(20);

              displayField.setHorizontalAlignment(JTextField.RIGHT);

              constraints.gridx = 0;

              constraints.gridy = 0;

              constraints.gridwidth = 4;

              constraints.gridheight = 1;

              constraints.fill = GridBagConstraints.BOTH;

              constraints.weightx = 100;

              constraints.weighty = 100;

              layout.setConstraints(displayField, constraints);

              container.add(displayField);

              ActionListener  = new InsertAction();

              ActionListener command = new CommandAction();

              // addButton("Backspace", 0, 1, 2, 1, );

              // addButton("CE", 2, 1, 1, 1, );

              // addButton("C", 3, 1, 1, 1, );

              addButton("7", 0, 2, 1, 1, );

              addButton("8", 1, 2, 1, 1, );

              addButton("9", 2, 2, 1, 1, );

              addButton("/", 3, 2, 1, 1, command);

              addButton("4", 0, 3, 1, 1, );

              addButton("5", 1, 3, 1, 1, );

              addButton("6", 2, 3, 1, 1, );

              addButton("*", 3, 3, 1, 1, command);

              addButton("1", 0, 4, 1, 1, );

              addButton("2", 1, 4, 1, 1, );

              addButton("3", 2, 4, 1, 1, );

              addButton("-", 3, 4, 1, 1, command);

              addButton("0", 0, 5, 1, 1, );

              // addButton("+/-", 1, 5, 1, 1, );// 只顯示"-"號(hào),"+"沒有實(shí)用價(jià)值

              addButton(".", 2, 5, 1, 1, );

              addButton("+", 3, 5, 1, 1, command);

              addButton("=", 0, 6, 4, 1, command);

              this.setResizable(false);

              setSize(180, 200);

              setVisible(true);

              }

              private void addButton(String label, int row, int column, int with,

              int height, ActionListener listener) {

              JButton button = new JButton(label);

              constraints.gridx = row;

              constraints.gridy = column;

              constraints.gridwidth = with;

              constraints.gridheight = height;

              constraints.fill = GridBagConstraints.BOTH;

              button.addActionListener(listener);

              layout.setConstraints(button, constraints);

              container.add(button);

              }

              private class InsertAction implements ActionListener {

              public void actionPerformed(ActionEvent event) {

              String input = event.getActionCommand();

              if (start) {

              displayField.setText("");

              start = false;

              if (input.equals("+/-"))

              displayField.setText(displayField.getText() + "-");

              }

              if (!input.equals("+/-")) {

              if (input.equals("Backspace")) {

              String str = displayField.getText();

              if (str.length() > 0)

              displayField.setText(str.substring(0, str.length() - 1));

              } else if (input.equals("CE") || input.equals("C")) {

              displayField.setText("0");

              start = true;

              } else

              displayField.setText(displayField.getText() + input);

              }

              }

              }

              private class CommandAction implements ActionListener {

              public void actionPerformed(ActionEvent evt) {

              String command = evt.getActionCommand();

              if (start) {

              lastCommand = command;

              } else {

              calculate(Double.parseDouble(displayField.getText()));

              lastCommand = command;

              start = true;

              }

              }

              }

              public void calculate(double x) {

              if (lastCommand.equals("+"))

              result += x;

              else if (lastCommand.equals("-"))

              result -= x;

              else if (lastCommand.equals("*"))

              result *= x;

              else if (lastCommand.equals("/"))

              result /= x;

              else if (lastCommand.equals("="))

              result = x;

              displayField.setText("" + result);

              }

              public static void main(String[] args) {

              Calculator calculator = new Calculator();

              calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

              }

              }

              第四種寫法:

              ——————————————————————————————————————————————

              package wanwa;

              import java.awt.*;

              import java.awt.event.*;

              import javax.swing.*;

              public class Calculator extends JFrame {

              private Container container;

              private GridBagLayout layout;

              private GridBagConstraints constraints;

              private JTextField displayField;// 計(jì)算結(jié)果顯示區(qū)

              private String lastCommand;// 保存+,-,*,/,=命令

              private double result;// 保存計(jì)算結(jié)果

              private boolean start;// 判斷是否為數(shù)字的開始

              public Calculator() {

              super("Calculator");

              container = getContentPane();

              layout = new GridBagLayout();

              container.setLayout(layout);

              constraints = new GridBagConstraints();

              start = true;

              result = 0;

              lastCommand = "=";

              displayField = new JTextField(20);

              displayField.setHorizontalAlignment(JTextField.RIGHT);

              constraints.gridx = 0;

              constraints.gridy = 0;

              constraints.gridwidth = 4;

              constraints.gridheight = 1;

              constraints.fill = GridBagConstraints.BOTH;

              constraints.weightx = 100;

              constraints.weighty = 100;

              layout.setConstraints(displayField, constraints);

              container.add(displayField);

              ActionListener  = new InsertAction();

              ActionListener command = new CommandAction();

              // addButton("Backspace", 0, 1, 2, 1, );

              // addButton("CE", 2, 1, 1, 1, );

              // addButton("C", 3, 1, 1, 1, );

              addButton("7", 0, 2, 1, 1, );

              addButton("8", 1, 2, 1, 1, );

              addButton("9", 2, 2, 1, 1, );

              addButton("/", 3, 2, 1, 1, command);

              addButton("4", 0, 3, 1, 1, );

              addButton("5", 1, 3, 1, 1, );

              addButton("6", 2, 3, 1, 1, );

              addButton("*", 3, 3, 1, 1, command);

              addButton("1", 0, 4, 1, 1, );

              addButton("2", 1, 4, 1, 1, );

              addButton("3", 2, 4, 1, 1, );

              addButton("-", 3, 4, 1, 1, command);

              addButton("0", 0, 5, 1, 1, );

              // addButton("+/-", 1, 5, 1, 1, );// 只顯示"-"號(hào),"+"沒有實(shí)用價(jià)值

              addButton(".", 2, 5, 1, 1, );

              addButton("+", 3, 5, 1, 1, command);

              addButton("=", 0, 6, 4, 1, command);

              this.setResizable(false);

              setSize(180, 200);

              setVisible(true);

              }

              private void addButton(String label, int row, int column, int with,

              int height, ActionListener listener) {

              JButton button = new JButton(label);

              constraints.gridx = row;

              constraints.gridy = column;

              constraints.gridwidth = with;

              constraints.gridheight = height;

              constraints.fill = GridBagConstraints.BOTH;

              button.addActionListener(listener);

              layout.setConstraints(button, constraints);

              container.add(button);

              }

              private class InsertAction implements ActionListener {

              public void actionPerformed(ActionEvent event) {

              String input = event.getActionCommand();

              if (start) {

              displayField.setText("");

              start = false;

              if (input.equals("+/-"))

              displayField.setText(displayField.getText() + "-");

              }

              if (!input.equals("+/-")) {

              if (input.equals("Backspace")) {

              String str = displayField.getText();

              if (str.length() > 0)

              displayField.setText(str.substring(0, str.length() - 1));

              } else if (input.equals("CE") || input.equals("C")) {

              displayField.setText("0");

              start = true;

              } else

              displayField.setText(displayField.getText() + input);

              }

              }

              }

              private class CommandAction implements ActionListener {

              public void actionPerformed(ActionEvent evt) {

              String command = evt.getActionCommand();

              if (start) {

              lastCommand = command;

              } else {

              calculate(Double.parseDouble(displayField.getText()));

              lastCommand = command;

              start = true;

              }

              }

              }

              public void calculate(double x) {

              if (lastCommand.equals("+"))

              result += x;

              else if (lastCommand.equals("-"))

              result -= x;

              else if (lastCommand.equals("*"))

              result *= x;

              else if (lastCommand.equals("/"))

              result /= x;

              else if (lastCommand.equals("="))

              result = x;

              displayField.setText("" + result);

              }

              public static void main(String[] args) {

              Calculator calculator = new Calculator();

              calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

              }

              }