安卓java計算器代碼 java編程計算器

java計算器代碼

這段代碼對你有幫助

創(chuàng)新互聯(lián)公司主要業(yè)務(wù)有網(wǎng)站營銷策劃、網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、小程序定制開發(fā)、H5技術(shù)、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過程中,公司還積累了豐富的行業(yè)經(jīng)驗、成都全網(wǎng)營銷資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。 

import javax.swing.*;

import javax.swing.border.Border;

import java.awt.*;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.math.BigDecimal;

import java.math.RoundingMode;

import java.util.HashMap;

/**

* 我的計算器。MyCalculator 繼承于 JFrame,是計算器的界面

*/

public class MyCalculator extends JFrame {

private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);

private JTextField textbox = new JTextField("0");

private CalculatorCore core = new CalculatorCore();

private ActionListener listener = new ActionListener() {

public void actionPerformed(ActionEvent e) {

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

String label = b.getText();

String result = core.process(label);

textbox.setText(result);

}

};

public MyCalculator(String title) throws HeadlessException {

super(title); // 調(diào)用父類構(gòu)造方法

setupFrame(); // 調(diào)整窗體屬性

setupControls(); // 創(chuàng)建控件

}

private void setupControls() {

setupDisplayPanel(); // 創(chuàng)建文本面板

setupButtonsPanel(); // 創(chuàng)建按鈕面板

}

// 創(chuàng)建按鈕面板并添加按鈕

private void setupButtonsPanel() {

JPanel panel = new JPanel();

panel.setBorder(border);

panel.setLayout(new GridLayout(4, 5, 3, 3));

createButtons(panel, new String[]{

"7", "8", "9", "+", "C",

"4", "5", "6", "-", "CE",

"1", "2", "3", "*", "", // 空字符串表示這個位置沒有按鈕

"0", ".", "=", "/", ""

});

this.add(panel, BorderLayout.CENTER);

}

/**

* 在指定的面板上創(chuàng)建按鈕

*

* @param panel 要創(chuàng)建按鈕的面板

* @param labels 按鈕文字

*/

private void createButtons(JPanel panel, String[] labels) {

for (String label : labels) {

// 如果 label 為空,則表示創(chuàng)建一個空面板。否則創(chuàng)建一個按鈕。

if (label.equals("")) {

panel.add(new JPanel());

} else {

JButton b = new JButton(label);

b.addActionListener(listener); // 為按鈕添加偵聽器

panel.add(b);

}

}

}

// 設(shè)置顯示面板,用一個文本框來作為計算器的顯示部分。

private void setupDisplayPanel() {

JPanel panel = new JPanel();

panel.setLayout(new BorderLayout());

panel.setBorder(border);

setupTextbox();

panel.add(textbox, BorderLayout.CENTER);

this.add(panel, BorderLayout.NORTH);

}

// 調(diào)整文本框

private void setupTextbox() {

textbox.setHorizontalAlignment(JTextField.RIGHT); // 文本右對齊

textbox.setEditable(false); // 文本框只讀

textbox.setBackground(Color.white); // 文本框背景色為白色

}

// 調(diào)整窗體

private void setupFrame() {

this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 當(dāng)窗體關(guān)閉時程序結(jié)束

this.setLocation(100, 50); // 設(shè)置窗體顯示在桌面上的位置

this.setSize(300, 200); // 設(shè)置窗體大小

this.setResizable(false); // 窗體大小固定

}

// 程序入口

public static void main(String[] args) throws Exception {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

MyCalculator frame = new MyCalculator("我的計算器");

frame.setVisible(true); // 在桌面上顯示窗體

}

}

/**

* 計算器核心邏輯。這個邏輯只能處理 1~2 個數(shù)的運算。

*/

class CalculatorCore {

private String displayText = "0"; // 要顯示的文本

boolean reset = true;

private BigDecimal number1, number2;

private String operator;

private HashMapString, Operator operators = new HashMapString, Operator();

private HashMapString, Processor processors = new HashMapString, Processor();

CalculatorCore() {

setupOperators();

setupProcessors();

}

// 為每種命令添加處理方式

private void setupProcessors() {

processors.put("[0-9]", new Processor() {

public void calculate(String command) {

numberClicked(command);

}

});

processors.put("\\.", new Processor() {

public void calculate(String command) {

dotClicked();

}

});

processors.put("=", new Processor() {

public void calculate(String command) {

equalsClicked();

}

});

processors.put("[+\\-*/]", new Processor() {

public void calculate(String command) {

operatorClicked(command);

}

});

processors.put("C", new Processor() {

public void calculate(String command) {

clearClicked();

}

});

processors.put("CE", new Processor() {

public void calculate(String command) {

clearErrorClicked();

}

});

}

// 為每種 operator 添加處理方式

private void setupOperators() {

operators.put("+", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.add(number2);

}

});

operators.put("-", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.subtract(number2);

}

});

operators.put("*", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.multiply(number2);

}

});

operators.put("/", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.divide(number2, 30, RoundingMode.HALF_UP);

}

});

}

// 根據(jù)命令處理。這里的命令實際上就是按鈕文本。

public String process(String command) {

for (String pattern : processors.keySet()) {

if (command.matches(pattern)) {

processors.get(pattern).calculate(command);

break;

}

}

return displayText;

}

// 當(dāng)按下 CE 時

private void clearErrorClicked() {

if (operator == null) {

number1 = null;

} else {

number2 = null;

}

displayText = "0";

reset = true;

}

// 當(dāng)按下 C 時,將計算器置為初始狀態(tài)。

private void clearClicked() {

number1 = null;

number2 = null;

operator = null;

displayText = "0";

reset = true;

}

// 當(dāng)按下 = 時

private void equalsClicked() {

calculateResult();

number1 = null;

number2 = null;

operator = null;

reset = true;

}

// 計算結(jié)果

private void calculateResult() {

number2 = new BigDecimal(displayText);

Operator oper = operators.get(operator);

if (oper != null) {

BigDecimal result = oper.process(number1, number2);

displayText = result.toString();

}

}

// 當(dāng)按下 +-*/ 時(這里也可以擴(kuò)展成其他中間操作符)

private void operatorClicked(String command) {

if (operator != null) {

calculateResult();

}

number1 = new BigDecimal(displayText);

operator = command;

reset = true;

}

// 當(dāng)按下 . 時

private void dotClicked() {

if (displayText.indexOf(".") == -1) {

displayText += ".";

} else if (reset) {

displayText = "0.";

}

reset = false;

}

// 當(dāng)按下 0-9 時

private void numberClicked(String command) {

if (reset) {

displayText = command;

} else {

displayText += command;

}

reset = false;

}

// 運算符處理接口

interface Operator {

BigDecimal process(BigDecimal number1, BigDecimal number2);

}

// 按鈕處理接口

interface Processor {

void calculate(String command);

}

}

JAVA簡單咋做,計算器代碼

簡單寫了下,代碼如下請參照:

/**

*?計算器類

*?

*?@author?Administrator

*

*/

public?class?Calculator?extends?JFrame?implements?ActionListener?{

private?static?final?long?serialVersionUID?=?3868243398506940702L;

//?文本框

private?JTextField?result;

//?按鈕數(shù)組

private?JButton[]?buttons;

//?按鈕文本

private?final?String[]?characters?=?{?"7",?"8",?"9",?"/",?"4",?"5",?"6",

"*",?"1",?"2",?"3",?"-",?"0",?".",?"=",?"+"?};

//?是否為第一個輸入的數(shù)字

private?boolean?isFirstDigit?=?true;

//?運算結(jié)果

private?double?resultNum?=?0.0;

//?運算符

private?String?operator?=?"=";

public?Calculator(String?title)?{

//?設(shè)置標(biāo)題欄

super(title);

//?初始化各組件

init();

//?注冊各組件監(jiān)聽器

registerListener();

//?顯示窗體

setVisible(true);

}

/**

*?初始化各組件

*/

private?void?init()?{

//?常用屬性初始化

setSize(220,?200);

setResizable(false);

setLocationRelativeTo(null);

setDefaultCloseOperation(EXIT_ON_CLOSE);

/*?文本框?qū)ο蟪跏蓟?*/

result?=?new?JTextField("0");

//?文本右對齊

result.setHorizontalAlignment(JTextField.RIGHT);

//?設(shè)置是否可編輯

result.setEditable(false);

/*?按鈕初始化?*/

buttons?=?new?JButton[characters.length];

for?(int?i?=?0;?i??buttons.length;?i++)?{

buttons[i]?=?new?JButton(characters[i]);

buttons[i].setFocusable(false);?//?不允許按鈕定位焦點

}

/*?將文本框與按鈕添加到窗體中?*/

add(result,?BorderLayout.NORTH);

JPanel?pnl?=?new?JPanel(new?GridLayout(4,?4,?5,?5));

for?(JButton?jButton?:?buttons)?{

pnl.add(jButton);

}

add(pnl);

this.getContentPane().setFocusable(true);

}

/**

*?注冊監(jiān)聽器

*/

private?void?registerListener()?{

for?(JButton?jButton?:?buttons)?{

jButton.addActionListener(this);

}

//?注冊鍵盤事件

this.getContentPane().addKeyListener(new?KeyAdapter()?{

@Override

public?void?keyPressed(KeyEvent?e)?{

String?text?=?String.valueOf(e.getKeyChar());

if?(Character.isDigit(text.charAt(0))?||?".".equals(text))?{?//?數(shù)字或小數(shù)點

handleNumber(text);

}?else?if?("+-*/=".indexOf(text)?!=?-1)?{?//?運算符

handleOperator(text);

}?else?if?(e.getKeyCode()?==?8)?{?//?退格鍵

String?tmp?=?result.getText().trim();

if?(tmp.length()?==?1)?{

result.setText("0");

isFirstDigit?=?true;

}?else?{

result.setText(tmp.substring(0,?tmp.length()?-?1));

}

}

}

});

}

@Override

public?void?actionPerformed(ActionEvent?e)?{

JButton?btn?=?(JButton)?e.getSource();

String?text?=?btn.getText().trim();

if?(Character.isDigit(text.charAt(0))?||?".".equals(text))?{?//?處理數(shù)字和小數(shù)點

handleNumber(text);

}?else?{?//?處理運算符

handleOperator(text);

}

}

/**

*?處理數(shù)字和小數(shù)點

*?

*?@param?text

*/

private?void?handleNumber(String?text)?{

if?(isFirstDigit)?{?//?第一次輸入

if?(".".equals(text))?{

this.result.setText("0.");

}?else?{

this.result.setText(text);

}

}?else?if?("0".equals(text)??"0".equals(this.result.getText()))?{

isFirstDigit?=?true;

return;

}?else?if?(".".equals(text)??this.result.getText().indexOf(".")?==?-1)?{

this.result.setText(this.result.getText()?+?".");

}?else?if?(!".".equals(text))?{

this.result.setText(this.result.getText()?+?text);

}

isFirstDigit?=?false;

}

/**

*?處理運算符

*?

*?@param?text

*/

private?void?handleOperator(String?text)?{

switch?(operator)?{?//?處理各項運算??適用于JDK1.7版本的

case?"+":

resultNum?+=?Double.parseDouble(this.result.getText());

break;

case?"-":

resultNum?-=?Double.parseDouble(this.result.getText());

break;

case?"*":

resultNum?*=?Double.parseDouble(this.result.getText());

break;

case?"/":

resultNum?/=?Double.parseDouble(this.result.getText());

break;

case?"=":

resultNum?=?Double.parseDouble(this.result.getText());

break;

}

//?將文本框的值修改為運算結(jié)果

this.result.setText(String.valueOf(resultNum));

//?將點擊的運算符放入operator保存

operator?=?text;

//?下一個數(shù)字第一次點擊

isFirstDigit?=?true;

}

public?static?void?main(String[]?args)?{

?new?Calculator("My?Calculator");

?}

}

運行結(jié)果如下:

求安卓(java)制作計算器的代碼?。。。ㄔ敿?xì)代碼)

?xml version="1.0" encoding="utf-8"?

LinearLayout xmlns:android=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

LinearLayout android:layout_width="fill_parent"

android:layout_height="wrap_content"

TextView

android:id="@+id/tvResult"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:height="50dp"

android:text="@string/tvResult"

/

/LinearLayout

LinearLayout android:layout_width="fill_parent"

android:layout_height="wrap_content"

Button

android:id="@+id/btnBackspace"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="150dp"

android:layout_marginLeft="10dp"

android:text="@string/btnbackspace"/

Button

android:id="@+id/btnCE"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="150dp"

android:text="@string/btnCE"/

/LinearLayout

LinearLayout android:layout_width="fill_parent"

android:layout_height="wrap_content"

Button

android:id="@+id/btn7"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="10dp"

android:width="75dp"

android:text="@string/btn7"/

Button

android:id="@+id/btn8"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btn8"/

Button

android:id="@+id/btn9"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btn9"/

Button

android:id="@+id/btnDiv"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btnDiv"/

/LinearLayout

LinearLayout android:layout_width="fill_parent"

android:layout_height="wrap_content"

Button

android:id="@+id/btn4"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="10dp"

android:width="75dp"

android:text="@string/btn4"/

Button

android:id="@+id/btn5"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btn5"/

Button

android:id="@+id/btn6"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btn6"/

Button

android:id="@+id/btnMul"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btnMul"/

/LinearLayout

LinearLayout android:layout_width="fill_parent"

android:layout_height="wrap_content"

Button

android:id="@+id/btn1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="10dp"

android:width="75dp"

android:text="@string/btn1"/

Button

android:id="@+id/btn2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btn2"/

Button

android:id="@+id/btn3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btn3"/

Button

android:id="@+id/btnAdd"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btnAdd"/

/LinearLayout

LinearLayout android:layout_width="fill_parent"

android:layout_height="wrap_content"

Button

android:id="@+id/btn0"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="10dp"

android:width="75dp"

android:text="@string/btn0"/

Button

android:id="@+id/btnC"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btnC"/

Button

android:id="@+id/btnEqu"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btnEqu"/

Button

android:id="@+id/btnSub"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:width="75dp"

android:text="@string/btnSub"/

/LinearLayout

/LinearLayout

文章題目:安卓java計算器代碼 java編程計算器
轉(zhuǎn)載源于:http://bm7419.com/article18/ddccidp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站導(dǎo)航靜態(tài)網(wǎng)站、網(wǎng)站維護(hù)、ChatGPT網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管