<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Java編寫計算器的的常見做法

    時間:2024-08-12 10:30:43 JAVA認證 我要投稿
    • 相關推薦

    Java編寫計算器的的常見做法

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

      界面設計:用一個JPanel1 布局是網格 (4*4),分別放置數字和功能鍵,再用一個JPanel2 放置顯示區(JTextArea)1和2,在把JPanel1放入JPanel2中,JPanel2 放入JFrame中;

      計算:

      有數字按鈕按下時,把相應的值讀入顯示區里,當有功能鍵按下時,顯示區清空,在讀入第二操作數,當有”=”按下時,調用相應的函數計算結果,并顯示。并激活相應的探聽器。

      方法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();

      }

      /**

      *采用成員內部類方式,實現探聽器接口,方便訪問主類內類內部成員。

      *此類負責數字按鈕Action事件監聽和處理

      */

      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);

      }

      }

      }

      /**

      * 成員內部類,負責操作符按鈕的事件處理

      */

      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("*****************簡易計算器****************");

      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請選擇運算規則:");

      int num = input.nextInt();

      switch(num){

      case 1:

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

      System.out.print("請輸入第1個加數:");

      int jiashu1 = input.nextInt();

      System.out.print("請輸入第2個加數:");

      int jiashu2 = input.nextInt();

      System.out.println("運算結果為:" + jiashu1 + " + " + jiashu1 + " = " + (jiashu1 + jiashu2));

      break;

      case 2:

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

      System.out.print("請輸入被減數:");

      int jianshu1 = input.nextInt();

      System.out.print("請輸入減數:");

      int jianshu2 = input.nextInt();

      System.out.println("運算結果為:" + jianshu1 + " - " + jianshu2 + " = " + (jianshu1 - jianshu2));

      break;

      case 3:

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

      System.out.print("請輸入第1個因數:");

      int chengfa1 = input.nextInt();

      System.out.print("請輸入第2個因數:");

      int chengfa2 = input.nextInt();

      System.out.println("運算結果為:" + chengfa1 + " * " + chengfa2 + " = " + (chengfa1 * chengfa2));

      break;

      case 4:

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

      System.out.print("請輸入被除數:");

      double chufa1 = input.nextInt();

      System.out.print("請輸入除數:");

      double chufa2 = input.nextInt();

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

      break;

      default:

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

      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;// 計算結果顯示區

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

      private double result;// 保存計算結果

      private boolean start;// 判斷是否為數字的開始

      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, );// 只顯示"-"號,"+"沒有實用價值

      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;// 計算結果顯示區

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

      private double result;// 保存計算結果

      private boolean start;// 判斷是否為數字的開始

      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, );// 只顯示"-"號,"+"沒有實用價值

      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);

      }

      }

    【Java編寫計算器的的常見做法】相關文章:

    Java怎么編寫Oracle存儲過程09-15

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

    java運行常見異常舉例08-30

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

    Java中最常見的錯誤盤點09-25

    常見日本料理做法09-14

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

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

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

    主站蜘蛛池模板: WWW国产精品内射老师| 久久99热国产这有精品| 国产精品嫩草视频永久网址| 日本国产精品久久| 国产一区二区精品久久| 人妻偷人精品成人AV| 桃花岛精品亚洲国产成人| 无码人妻精品一区二区三| 久久国产精品国语对白| 精品一区二区三区中文字幕| 亚洲精品国产精品乱码视色| 国产三级精品三级在线观看专1| 国产精品区一区二区三在线播放| 无码AⅤ精品一区二区三区| 国产精品福利片免费看 | 国产一精品一av一免费爽爽| 中文字幕在线亚洲精品| 精品国产一级在线观看| 亚洲一二成人精品区| 99精品久久精品| 久久99国产乱子伦精品免费| 亚洲福利精品一区二区三区| 精品国产亚洲一区二区在线观看 | 亚洲精品无码成人片在线观看| 国产专区日韩精品欧美色| 98精品国产自产在线XXXX| 欧美一区二区精品| 久草视频在线这里精品| 国产精品分类视频分类一区| 国内精品久久久久久99| 人人妻人人澡人人爽人人精品电影| 亚洲av无码成人精品国产| 欧美精品亚洲人成在线观看 | 亚洲国产精品不卡毛片a在线| 国产精品欧美久久久久天天影视| 91精品国产人成网站| 91精品国产91久久| 成人精品一区二区三区在线观看| 中文字幕精品一区影音先锋 | 亚州日韩精品专区久久久| 日韩精品一区二区三区影院|