用java編寫一個計算器_用java程序編寫一個計算器

展開全部

給你一個參考,希望不62616964757a686964616fe58685e5aeb931333330343261要被百度吞了當晚餐

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.text.DecimalFormat;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class Calculator {

//計算器面板

private JFrame f = new JFrame("Calculator");

//輸入面扳

private JPanel inputPanel = new JPanel();

//加減乘除面板

private JPanel operationPanel = new JPanel();

//數字面板

private JPanel buttonsPanel = new JPanel();

//輸入數據文本框

private JTextField input = new JTextField(20);

//退格鍵

private JButton backspace = new JButton("BackSpace");

//清空

private JButton CE = new JButton("CE ");

//刪除

private JButton C = new JButton("C ");

//四則運算符號鍵

private JButton add = new JButton("+");

private JButton sub = new JButton("-");

private JButton mul = new JButton("*");

private JButton div = new JButton("/");

//小數點

private JButton decimal = new JButton(".");

//等號

private JButton equal = new JButton("=");

//數字鍵

private JButton zero = new JButton("0");

private JButton one = new JButton("1");

private JButton two = new JButton("2");

private JButton three = new JButton("3");

private JButton four = new JButton("4");

private JButton five = new JButton("5");

private JButton six = new JButton("6");

private JButton seven = new JButton("7");

private JButton eight = new JButton("8");

private JButton nine = new JButton("9");

private String num1 = "";//保存第一個運算數字

private String operator = "";//保存運算符號

public static void main(String[] args) {

new Calculator();//new計算器實例

}

public Calculator(){

//添加組件,布局

inputPanel.add(input);

f.add(inputPanel, BorderLayout.NORTH);

operationPanel.add(backspace);

operationPanel.add(CE);

operationPanel.add(C);

f.add(operationPanel, BorderLayout.CENTER);

buttonsPanel.add(add);

buttonsPanel.add(sub);

buttonsPanel.add(mul);

buttonsPanel.add(div);

buttonsPanel.add(one);

buttonsPanel.add(two);

buttonsPanel.add(three);

buttonsPanel.add(zero);

buttonsPanel.add(four);

buttonsPanel.add(five);

buttonsPanel.add(six);

buttonsPanel.add(decimal);

buttonsPanel.add(seven);

buttonsPanel.add(eight);

buttonsPanel.add(nine);

buttonsPanel.add(equal);

buttonsPanel.setLayout(new GridLayout(4, 4));

f.add(buttonsPanel, BorderLayout.SOUTH);

//注冊各個組件監聽事件

backspace.addMouseListener(new OperationMouseListener());

CE.addMouseListener(new OperationMouseListener());

C.addMouseListener(new OperationMouseListener());

decimal.addMouseListener(new OperationMouseListener());

equal.addMouseListener(new OperationMouseListener());

//注冊四則運算監聽

add.addMouseListener(new CalcMouseListener());

sub.addMouseListener(new CalcMouseListener());

mul.addMouseListener(new CalcMouseListener());

div.addMouseListener(new CalcMouseListener());

//注冊數字監聽事件

zero.addMouseListener(new NumberMouseListener());

one.addMouseListener(new NumberMouseListener());

two.addMouseListener(new NumberMouseListener());

three.addMouseListener(new NumberMouseListener());

four.addMouseListener(new NumberMouseListener());

five.addMouseListener(new NumberMouseListener());

six.addMouseListener(new NumberMouseListener());

seven.addMouseListener(new NumberMouseListener());

eight.addMouseListener(new NumberMouseListener());

nine.addMouseListener(new NumberMouseListener());

f.setVisible(true);

f.pack();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

private class NumberMouseListener implements MouseListener{

public void mouseClicked(MouseEvent e) {

if(input.getText().trim().equals("0")){//如果文本框已經是0,結果還是0

input.setText(((JButton)e.getSource()).getText().trim());

}else{//否則的話,把0添加到后面,譬如文本框是1,結果就為10

input.setText(input.getText().concat(((JButton)e.getSource()).getText().trim()));

}

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

}

private class CalcMouseListener implements MouseListener{

//如果輸入的是運算符號,保存第一個結果和運算符號

public void mouseClicked(MouseEvent e) {

num1 = input.getText().trim();input.setText("");

operator = ((JButton)e.getSource()).getText().trim();

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

}

private class OperationMouseListener implements MouseListener{

public void mouseClicked(MouseEvent e) {

if(e.getSource() == backspace){//退格鍵,刪除一個直到沒有字符刪除

String inputText = input.getText();

if(inputText.length() > 0){

input.setText(inputText.substring(0, inputText.length() - 1));

}

}else if(e.getSource() == C){

input.setText("0");//C,清空所有運算數字和符號

num1 = "";

}else if(e.getSource() == CE){

input.setText("0");//CE-->將文本框置為0

}else if(e.getSource() == decimal){

String text = input.getText().trim();

//如果按了小數點,如果文本框已經有小數點,不做任何操作,否則在結果后面加上小數點

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

input.setText(text.concat("."));

}

}else if(e.getSource() == equal){

//如果是等號

if(!operator.trim().equals("")){

if(!input.getText().trim().equals("")){

double result = 0D;

if(operator.equals("+")){//執行加法運算

result = Double.parseDouble(num1) + Double.parseDouble(input.getText().trim());

}else if(operator.equals("-")){//減法運算

result = Double.parseDouble(num1) - Double.parseDouble(input.getText().trim());

}else if(operator.equals("*")){//乘法運算

result = Double.parseDouble(num1) * Double.parseDouble(input.getText().trim());

}else if(operator.equals("/")){//除法運算

result = Double.parseDouble(num1) / Double.parseDouble(input.getText().trim());

}

//格式化最終結果,保留兩位小數點

input.setText(new DecimalFormat("0.00").format(result));

}

}

}

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

}

}

本回答被提問者采納

2Q==

已贊過

已踩過<

你對這個回答的評價是?

評論

收起

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277526.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277526.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277526.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TypeScript基礎入門 - 接口 - 可索引的類型

轉載地址 TypeScript基礎入門 - 接口 - 可索引的類型 項目實踐倉庫 https://github.com/durban89/typescript_demo.git tag: 1.0.11 為了保證后面的學習演示需要安裝下ts-node&#xff0c;這樣后面的每個操作都能直接運行看到輸出的結果。 npm install -D ts-node 后面自己在練…

jquery中的ajax方法(備忘)

參考&#xff1a;https://www.cnblogs.com/tylerdonet/p/3520862.html w3school:http://www.w3school.com.cn/jquery/ajax_ajax.asp 1.url: 要求為String類型的參數&#xff0c;&#xff08;默認為當前頁地址&#xff09;發送請求的地址。 2.type: 要求為String類型的參數&…

java高級類_Java高級類特性(一)

權限類內同包不同包子類不同包非子類private√default√√protected√√√public√√√√四、super關鍵字的使用package com.test.java;/** super可以用來修飾屬性、方法、構造器* 1)當子類與父類中有同名的屬性時&#xff0c;可以通過"super.屬性"顯式的調用父類中聲…

Android.對話框(AlertDialog/Toast/Snackbar)

1、資料&#xff1a; 1.1、Android提醒微技巧&#xff0c;你真的了解Dialog、Toast和Snackbar嗎&#xff1f; - CSDN博客.html&#xff08;https://blog.csdn.net/guolin_blog/article/details/51336415&#xff09; 1.2、Android界面設計之對話框——定制Toast、AlertDialog -…

第4次作業

轉載于:https://www.cnblogs.com/wzh2920330283/p/11027254.html

基于Docker搭建Percona XtraDB Cluster數據庫集群

本文實驗的環境參數 阿里云ECS Centos7.5Docker version 18.06.0-cepercona/percona-xtradb-cluster:5.7Percona XtraDB Cluster的鏡像下載地址&#xff1a;https://hub.docker.com/r/percona/percona-xtradb-cluster/ 怎么使用Docke和下載鏡像&#xff0c;請查看Docker的官方文…

java publickey_數字證書中讀取PublicKey

1. 讀取https簽發證書中的key1) 在下面的代碼中,是實現讀取證書字符串來讀取key的,CERTIFICATE 就是一個證書的字符串, 而方法cf.generateCertificate() 接受的是一個InputStream 流,當然這個地方也可以讀取一個文件 new FileInputSream("file path")即可!public Str…

UIViewController 小結

1 生命周期 init方法中view仍然是nil&#xff0c;此時&#xff0c;如果寫了self.view&#xff0c;直接調用loadView。看名字也知道&#xff0c;loadView在viewDidLoad之前。initWithNibName:bundle:&#xff0c;designated初始化方法2 代碼組織 init&#xff0c;只有需要傳一些…

多核學習方法介紹

通過上篇文章的學習&#xff0c;我們知道&#xff0c;相比于單個核函數&#xff0c;多核模型可以具有更高的靈活性。經過多個核函數映射后的高維空間是由多個特征空間組合而成的組合空間&#xff0c;而顯然組合空間可以組合各個子空間不同的特征映射能力&#xff0c;能夠將異構…

java注解類型_Java注解類型

本篇文章幫大家學習java注解類型&#xff0c;包含了Java注解類型使用方法、操作技巧、實例演示和注意事項&#xff0c;有一定的學習價值&#xff0c;大家可以用來參考。標記注解類型標記注解類型是沒有元素的注解類型&#xff0c;甚至沒有默認值。標記注解由注解處理工具使用。…

linux go環境安裝和基本項目結構

最近項目中要用到Go語言&#xff0c;所以簡單總結一下安裝和配置&#xff0c;Go這個語言本身就限定了很多規范&#xff0c;比如項目設置&#xff0c;編程風格等&#xff0c;開發中就不需要再因為各種規范問題糾結了&#xff0c;直接用官方規定的能避免很多坑&#xff0c;下面直…

運輸層

運輸層-TCP 簡介 通俗點來說&#xff0c;運輸層是連接底層和用戶層的&#xff0c;運輸層向它上面的應用層提供通信服務&#xff0c;它屬于通信部分的最高層&#xff0c;同時也是用戶功能的最低層。 運輸層重要功能是復用和分用。復用&#xff1a;發送方不同應用進程可以使用同一…

對AI"出錯"零容忍?美國加強AI推理解釋能力研究

隨著硅谷私企引領人工智能&#xff08;AI&#xff09;爆發式發展&#xff0c;美國國防部曾發布報告稱&#xff0c;將“立即采取行動”加速AI和自動化技術研發。據《麻省理工技術評論》雜志網站近日報道&#xff0c;美國國防高級研究計劃局&#xff08;DARPA&#xff09;已經著手…

java調用指定瀏覽器_Java調用瀏覽器打開網頁完整實例

本文實例講述了java調用瀏覽器打開網頁的方法。分享給大家供大家參考。具體實現方法如下&#xff1a;package com.yifang.demo;import java.io.file;public class openpagedemo {public static void main(string[] args) {try {//string url "http://www.baidu.com"…

[HDU517] 小奇的集合

題目鏈接 顯然有貪心每次選擇最大的兩個數來做。 于是暴力地把最大的兩個數調整到非負&#xff08;暴力次數不超過1e5&#xff09;&#xff0c;接下來使用矩陣乘法即可。 \[ \begin{pmatrix} B\\S\\T \end{pmatrix} \begin{pmatrix} 1&1&0\\ 1&0&0\\ 1&1&…

phpStudy

很多朋友在學習php的過程中會看到phpstudy這個東西&#xff0c;那么phpstudy是做什么的呢&#xff1f;有什么用&#xff1f;接下來的這篇文章將個大家來詳細的介紹一下phpstudy的內容。 首先在百度百科上對于phpstudy的定義是一個PHP調試環境的程序集成包。 該程序包集成最新的…

殺入共享汽車市場的PonyCar,是下一個犧牲者還是引領者?

曾幾何時&#xff0c;汽車是財富、地位的象征&#xff0c;擁有一輛汽車就感覺自己處處高別人一等。但如今&#xff0c;汽車已然成為一件隨處可見的商品&#xff0c;甚至已經到車來車往、熙熙攘攘的地步。根據中商產業研究院發布的《2018-2023年中國汽車行業市場前景及投資機會研…

python圖片內容長度識別_Python實現識別圖片內容的方法分析

本文實例講述了Python實現識別圖片內容的方法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;python識別圖片內容。這里我的環境為windows64位&#xff0c;python2.7.14需要用到PIL模塊和tesseract模塊。首先需要安裝pip包管理&#xff0c;安裝方法可參考附錄windows下…

AJAX工具

代碼如下 var AppAjax {baseUrl:AppConfig.apiUrl//【POST請求】,post:function(pUrl,pData,pSuccessFun){pUrl AppAjax.baseUrl pUrl;$.ajax({headers: {token: AppConfig.token},url:pUrl,type:POST,data:JSON.stringify(pData),//pData,//JSON.stringify(),contentType:&q…

厲害了!Intel第九代酷睿參數曝光

2019獨角獸企業重金招聘Python工程師標準>>> 導讀上周有消息稱&#xff0c;Intel第九代酷睿處理器最快于8月1日發布&#xff0c;共有三款主打產品&#xff0c;分別是i9-9900K、i7-9700K和i5-9600K。其中&#xff0c;i9-9900K設計為8核16線程&#xff0c;基礎主頻3.6…