欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java編寫計算器的常見方法實例總結(jié)

 更新時間:2016年04月05日 10:19:08   作者:滄海小強  
這篇文章主要介紹了Java編寫計算器的常見方法,結(jié)合實例形式總結(jié)分析了Java實現(xiàn)計算器功能的常用方法,需要的朋友可以參考下

本文實例總結(jié)了Java編寫計算器的常見方法。分享給大家供大家參考,具體如下:

方法一:

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;// 計算結(jié)果顯示區(qū)
private String lastCommand;// 保存+,-,*,/,=命令
private double result;// 保存計算結(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 insert = new InsertAction();
ActionListener command = new CommandAction();
// addButton("Backspace", 0, 1, 2, 1, insert);
// addButton("CE", 2, 1, 1, 1, insert);
// addButton("C", 3, 1, 1, 1, insert);
addButton("7", 0, 2, 1, 1, insert);
addButton("8", 1, 2, 1, 1, insert);
addButton("9", 2, 2, 1, 1, insert);
addButton("/", 3, 2, 1, 1, command);
addButton("4", 0, 3, 1, 1, insert);
addButton("5", 1, 3, 1, 1, insert);
addButton("6", 2, 3, 1, 1, insert);
addButton("*", 3, 3, 1, 1, command);
addButton("1", 0, 4, 1, 1, insert);
addButton("2", 1, 4, 1, 1, insert);
addButton("3", 2, 4, 1, 1, insert);
addButton("-", 3, 4, 1, 1, command);
addButton("0", 0, 5, 1, 1, insert);
// addButton("+/-", 1, 5, 1, 1, insert);// 只顯示"-"號,"+"沒有實用價值
addButton(".", 2, 5, 1, 1, insert);
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);
}
}

方法二:

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)部類方式,實現(xiàn)監(jiā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
  }
 }
}

方法三:

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請選擇運算規(guī)則:");
int num = input.nextInt();
switch(num){
case 1:
System.out.println("\n******你選擇了加法******\n");
System.out.print("請輸入第1個加數(shù):");
int jiashu1 = input.nextInt();
System.out.print("請輸入第2個加數(shù):");
int jiashu2 = input.nextInt();
System.out.println("運算結(jié)果為:" + jiashu1 + " + " + jiashu1 + " = " + (jiashu1 + jiashu2));
break;
case 2:
System.out.println("\n******你選擇了減法******\n");
System.out.print("請輸入被減數(shù):");
int jianshu1 = input.nextInt();
System.out.print("請輸入減數(shù):");
int jianshu2 = input.nextInt();
System.out.println("運算結(jié)果為:" + jianshu1 + " - " + jianshu2 + " = " + (jianshu1 - jianshu2));
break;
case 3:
System.out.println("\n******你選擇了乘法******\n");
System.out.print("請輸入第1個因數(shù):");
int chengfa1 = input.nextInt();
System.out.print("請輸入第2個因數(shù):");
int chengfa2 = input.nextInt();
System.out.println("運算結(jié)果為:" + chengfa1 + " * " + chengfa2 + " = " + (chengfa1 * chengfa2));
break;
case 4:
System.out.println("\n******你選擇了除法******\n");
System.out.print("請輸入被除數(shù):");
double chufa1 = input.nextInt();
System.out.print("請輸入除數(shù):");
double chufa2 = input.nextInt();
System.out.println("運算結(jié)果為:" + 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;// 計算結(jié)果顯示區(qū)
private String lastCommand;// 保存+,-,*,/,=命令
private double result;// 保存計算結(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 insert = new InsertAction();
ActionListener command = new CommandAction();
// addButton("Backspace", 0, 1, 2, 1, insert);
// addButton("CE", 2, 1, 1, 1, insert);
// addButton("C", 3, 1, 1, 1, insert);
addButton("7", 0, 2, 1, 1, insert);
addButton("8", 1, 2, 1, 1, insert);
addButton("9", 2, 2, 1, 1, insert);
addButton("/", 3, 2, 1, 1, command);
addButton("4", 0, 3, 1, 1, insert);
addButton("5", 1, 3, 1, 1, insert);
addButton("6", 2, 3, 1, 1, insert);
addButton("*", 3, 3, 1, 1, command);
addButton("1", 0, 4, 1, 1, insert);
addButton("2", 1, 4, 1, 1, insert);
addButton("3", 2, 4, 1, 1, insert);
addButton("-", 3, 4, 1, 1, command);
addButton("0", 0, 5, 1, 1, insert);
// addButton("+/-", 1, 5, 1, 1, insert);// 只顯示"-"號,"+"沒有實用價值
addButton(".", 2, 5, 1, 1, insert);
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程序設(shè)計有所幫助。

相關(guān)文章

  • java之多線程搶火車票的實現(xiàn)示例

    java之多線程搶火車票的實現(xiàn)示例

    生活中有很多多線程的案例,購票就是一個很常見的問題,本文主要介紹了java之多線程搶火車票的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Java代碼優(yōu)化細(xì)節(jié)

    Java代碼優(yōu)化細(xì)節(jié)

    這篇文章主要為大家詳細(xì)介紹了Java代碼優(yōu)化細(xì)節(jié),通過不同細(xì)節(jié)對java代碼進行優(yōu)化,感興趣的小伙伴們可以參考一下
    2016-08-08
  • spring cloud gateway請求跨域問題解決方案

    spring cloud gateway請求跨域問題解決方案

    這篇文章主要介紹了spring cloud gateway請求跨域問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • java實現(xiàn)文件分片上傳并且斷點續(xù)傳的示例代碼

    java實現(xiàn)文件分片上傳并且斷點續(xù)傳的示例代碼

    本文主要介紹了java實現(xiàn)文件分片上傳并且斷點續(xù)傳的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java的特點和優(yōu)點(動力節(jié)點整理)

    Java的特點和優(yōu)點(動力節(jié)點整理)

    由于Java語言的設(shè)計者們十分熟悉C++語言,所以在設(shè)計時很好地借鑒了C++語言??梢哉f,Java語言是一種比C++語言“還面向?qū)ο蟆钡囊环N編程語言,下面通過本文說下java的特點和優(yōu)點
    2017-03-03
  • mybatis generator只能生成insert和selectAll的操作

    mybatis generator只能生成insert和selectAll的操作

    這篇文章主要介紹了mybatis generator只能生成insert和selectAll的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Spring動態(tài)監(jiān)聽Nacos配置中心key值變更的實現(xiàn)方法

    Spring動態(tài)監(jiān)聽Nacos配置中心key值變更的實現(xiàn)方法

    Nacos本身提供支持監(jiān)聽配置變更的操作,但在使用起來,個人感覺不是很友好,無法精確到某個key的變更監(jiān)聽,所以本文小編給大家介紹了Spring動態(tài)監(jiān)聽Nacos配置中心key值變更的實現(xiàn)方法,需要的朋友可以參考下
    2024-08-08
  • java中List<對象>如何根據(jù)對象的一個屬性進行去重

    java中List<對象>如何根據(jù)對象的一個屬性進行去重

    這篇文章主要給大家介紹了關(guān)于java中List<對象>如何根據(jù)對象的一個屬性進行去重的相關(guān)資料,在開發(fā)中可能會遇到很多需要去重的情況,比如Person對象有name跟age兩個屬性,需要根據(jù)age進行去重,需要的朋友可以參考下
    2023-08-08
  • Java開發(fā)利器之Guava?Cache的使用教程

    Java開發(fā)利器之Guava?Cache的使用教程

    緩存技術(shù)被認(rèn)為是減輕服務(wù)器負(fù)載、降低網(wǎng)絡(luò)擁塞、增強Web可擴展性的有效途徑之一。今天咱們就來聊聊Guava?Cache本地緩存,感興趣的可以了解一下
    2022-09-09
  • SpringBoot開發(fā)實戰(zhàn)之自動配置

    SpringBoot開發(fā)實戰(zhàn)之自動配置

    SpringBoot的核心就是自動配置,自動配置又是基于條件判斷來配置Bean,下面這篇文章主要給大家介紹了關(guān)于SpringBoot開發(fā)實戰(zhàn)之自動配置的相關(guān)資料,需要的朋友可以參考下
    2021-08-08

最新評論