java設計一個計算器
㈠ 用java設計一個計算器 1.可以沒有界面,但要有輸入和輸出 2.整數,小數,加減乘除,求余,括弧
package com.electricauto.work.controller;
import java.awt.BorderLayout;  
import java.awt.Color;  
import java.awt.GridLayout;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import javax.swing.JButton;  
import javax.swing.JFrame;  
import javax.swing.JPanel;  
import javax.swing.JTextField;  
/** 
* 一個計算器,與Windows附件自帶計算器的標准版功能、界面相仿。 但還不支持鍵盤操作。 
*/  
public class jisuanqi extends JFrame implements ActionListener {  
/** 計算器上的鍵的顯示名字 */  
private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",  
"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };  
/** 計算器上的功能鍵的顯示名字 */  
private final String[] COMMAND = { "Backspace", "CE", "C" };  
/** 計算器左邊的M的顯示名字 */  
private final String[] M = { " ", "MC", "MR", "MS", "M+" };  
/** 計算器上鍵的按鈕 */  
private JButton keys[] = new JButton[KEYS.length];  
/** 計算器上的功能鍵的按鈕 */  
private JButton commands[] = new JButton[COMMAND.length];  
/** 計算器左邊的M的按鈕 */  
private JButton m[] = new JButton[M.length];  
/** 計算結果文本框 */  
private JTextField resultText = new JTextField("0");  
// 標志用戶按的是否是整個表達式的第一個數字,或者是運算符後的第一個數字  
private boolean firstDigit = true;  
// 計算的中間結果。  
private double resultNum = 0.0;  
// 當前運算的運算符  
private String operator = "=";  
// 操作是否合法  
private boolean operateValidFlag = true;  
/** 
* 構造函數 
*/  
public jisuanqi() {  
super();  
// 初始化計算器  
init();  
// 設置計算器的背景顏色  
this.setBackground(Color.LIGHT_GRAY);  
this.setTitle("計算器");  
// 在屏幕(500, 300)坐標處顯示計算器  
this.setLocation(500, 300);  
// 不許修改計算器的大小  
this.setResizable(false);  
// 使計算器中各組件大小合適  
this.pack();  
}  
/** 
* 初始化計算器 
*/  
private void init() {  
// 文本框中的內容採用右對齊方式  
resultText.setHorizontalAlignment(JTextField.RIGHT);  
// 不允許修改結果文本框  
resultText.setEditable(false);  
// 設置文本框背景顏色為白色  
resultText.setBackground(Color.white);  
// 初始化計算器上鍵的按鈕,將鍵放在一個畫板內  
JPanel calckeysPanel = new JPanel();  
// 用網格布局器,4行,5列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素  
calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));  
for (int i = 0; i < KEYS.length; i++) {  
keys[i] = new JButton(KEYS[i]);  
calckeysPanel.add(keys[i]);  
keys[i].setForeground(Color.blue);  
}  
// 運算符鍵用紅色標示,其他鍵用藍色表示  
keys[3].setForeground(Color.red);  
keys[8].setForeground(Color.red);  
keys[13].setForeground(Color.red);  
keys[18].setForeground(Color.red);  
keys[19].setForeground(Color.red);  
// 初始化功能鍵,都用紅色標示。將功能鍵放在一個畫板內  
JPanel commandsPanel = new JPanel();  
// 用網格布局器,1行,3列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素  
commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));  
for (int i = 0; i < COMMAND.length; i++) {  
commands[i] = new JButton(COMMAND[i]);  
commandsPanel.add(commands[i]);  
commands[i].setForeground(Color.red);  
}  
// 初始化M鍵,用紅色標示,將M鍵放在一個畫板內  
JPanel calmsPanel = new JPanel();  
// 用網格布局管理器,5行,1列的網格,網格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素  
calmsPanel.setLayout(new GridLayout(5, 1, 3, 3));  
for (int i = 0; i < M.length; i++) {  
m[i] = new JButton(M[i]);  
calmsPanel.add(m[i]);  
m[i].setForeground(Color.red);  
}  
// 下面進行計算器的整體布局,將calckeys和command畫板放在計算器的中部,  
// 將文本框放在北部,將calms畫板放在計算器的西部。  
// 新建一個大的畫板,將上面建立的command和calckeys畫板放在該畫板內  
JPanel panel1 = new JPanel();  
// 畫板採用邊界布局管理器,畫板里組件之間的水平和垂直方向上間隔都為3象素  
panel1.setLayout(new BorderLayout(3, 3));  
panel1.add("North", commandsPanel);  
panel1.add("West", calckeysPanel);  
// 建立一個畫板放文本框  
JPanel top = new JPanel();  
top.setLayout(new BorderLayout());  
top.add("Center", resultText);  
// 整體布局  
getContentPane().setLayout(new BorderLayout(3, 5));  
getContentPane().add("North", top);  
getContentPane().add("Center", panel1);  
getContentPane().add("West", calmsPanel);  
// 為各按鈕添加事件偵聽器  
// 都使用同一個事件偵聽器,即本對象。本類的聲明中有implements ActionListener  
for (int i = 0; i < KEYS.length; i++) {  
keys[i].addActionListener(this);  
}  
for (int i = 0; i < COMMAND.length; i++) {  
commands[i].addActionListener(this);  
}  
for (int i = 0; i < M.length; i++) {  
m[i].addActionListener(this);  
}  
}  
/** 
* 處理事件 
*/  
public void actionPerformed(ActionEvent e) {  
// 獲取事件源的標簽  
String label = e.getActionCommand();  
if (label.equals(COMMAND[0])) {  
// 用戶按了"Backspace"鍵  
handleBackspace();  
} else if (label.equals(COMMAND[1])) {  
// 用戶按了"CE"鍵  
resultText.setText("0");  
} else if (label.equals(COMMAND[2])) {  
// 用戶按了"C"鍵  
handleC();  
} else if ("0123456789.".indexOf(label) >= 0) {  
// 用戶按了數字鍵或者小數點鍵  
handleNumber(label);  
// handlezero(zero);  
} else {  
// 用戶按了運算符鍵  
handleOperator(label);  
}  
}  
/** 
* 處理Backspace鍵被按下的事件 
*/  
private void handleBackspace() {  
String text = resultText.getText();  
int i = text.length();  
if (i > 0) {  
// 退格,將文本最後一個字元去掉  
text = text.substring(0, i - 1);  
if (text.length() == 0) {  
// 如果文本沒有了內容,則初始化計算器的各種值  
resultText.setText("0");  
firstDigit = true;  
operator = "=";  
} else {  
// 顯示新的文本  
resultText.setText(text);  
}  
}  
}  
/** 
* 處理數字鍵被按下的事件 
*  
* @param key 
*/  
private void handleNumber(String key) {  
if (firstDigit) {  
// 輸入的第一個數字  
resultText.setText(key);  
} else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) {  
// 輸入的是小數點,並且之前沒有小數點,則將小數點附在結果文本框的後面  
resultText.setText(resultText.getText() + ".");  
} else if (!key.equals(".")) {  
// 如果輸入的不是小數點,則將數字附在結果文本框的後面  
resultText.setText(resultText.getText() + key);  
}  
// 以後輸入的肯定不是第一個數字了  
firstDigit = false;  
}  
/** 
* 處理C鍵被按下的事件 
*/  
private void handleC() {  
// 初始化計算器的各種值  
resultText.setText("0");  
firstDigit = true;  
operator = "=";  
}  
/** 
* 處理運算符鍵被按下的事件 
*  
* @param key 
*/  
private void handleOperator(String key) {  
if (operator.equals("/")) {  
// 除法運算  
// 如果當前結果文本框中的值等於0  
if (getNumberFromText() == 0.0) {  
// 操作不合法  
operateValidFlag = false;  
resultText.setText("除數不能為零");  
} else {  
resultNum /= getNumberFromText();  
}  
} else if (operator.equals("1/x")) {  
// 倒數運算  
if (resultNum == 0.0) {  
// 操作不合法  
operateValidFlag = false;  
resultText.setText("零沒有倒數");  
} else {  
resultNum = 1 / resultNum;  
}  
} else if (operator.equals("+")) {  
// 加法運算  
resultNum += getNumberFromText();  
} else if (operator.equals("-")) {  
// 減法運算  
resultNum -= getNumberFromText();  
} else if (operator.equals("*")) {  
// 乘法運算  
resultNum *= getNumberFromText();  
} else if (operator.equals("sqrt")) {  
// 平方根運算  
resultNum = Math.sqrt(resultNum);  
} else if (operator.equals("%")) {  
// 百分號運算,除以100  
resultNum = resultNum / 100;  
} else if (operator.equals("+/-")) {  
// 正數負數運算  
resultNum = resultNum * (-1);  
} else if (operator.equals("=")) {  
// 賦值運算  
resultNum = getNumberFromText();  
}  
if (operateValidFlag) {  
// 雙精度浮點數的運算  
long t1;  
double t2;  
t1 = (long) resultNum;  
t2 = resultNum - t1;  
if (t2 == 0) {  
resultText.setText(String.valueOf(t1));  
} else {  
resultText.setText(String.valueOf(resultNum));  
}  
}  
// 運算符等於用戶按的按鈕  
operator = key;  
firstDigit = true;//這個地方太tm巧妙了想好幾天, 先進行上一次操作,再將本次操作(最後一次操作)賦給操作,所以每次操作前都先進行上一次操作,默認操作為"=" 挺nb
operateValidFlag = true;  
}  
/** 
* 從結果文本框中獲取數字 
*  
* @return 
*/  
private double getNumberFromText() {  
double result = 0;  
try {  
result = Double.valueOf(resultText.getText()).doubleValue(); //顯示文字後不會蹦出
} catch (NumberFormatException e) {  
}  
return result;  
}  
public static void main(String args[]) {  
jisuanqi calculator1 = new jisuanqi();  
calculator1.setVisible(true);  
calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
}  
}
========================================================
代碼比較多,放在任何一個項目里都行,新建一個叫做 jisuanqi 的java文件,粘貼進去就行,會有一個錯誤是包位置的選擇,點擊錯誤選擇正確的包位置就可以了,   無錯誤後執行文件最下面的main函數,就會出現計算器。有不懂的可以繼續問,望採納~!
㈡ 用java編寫計算器
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JCalculator extends JFrame implements ActionListener {
private static final long serialVersionUID = -L;
private class WindowCloser extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
int i;
private final String[] str = { "7", "8", "9", "/", "4", "5", "6", "*", "1",
"2", "3", "-", ".", "0", "=", "+" };
// 建立按鈕
JButton[] buttons = new JButton[str.length];
// 撤銷重置
JButton reset = new JButton("CE");
// 建立文本域顯示結果
JTextField display = new JTextField("0");
public JCalculator() {
super("Calculator");
// 添加一個面板
JPanel panel1 = new JPanel(new GridLayout(4, 4));
// panel1.setLayout(new GridLayout(4,4));
for (i = 0; i < str.length; i++) {
buttons[i] = new JButton(str[i]);
panel1.add(buttons[i]);
}
JPanel panel2 = new JPanel(new BorderLayout());
// panel2.setLayout(new BorderLayout());
panel2.add("Center", display);
panel2.add("East", reset);
// JPanel panel3 = new Panel();
getContentPane().setLayout(new BorderLayout());
getContentPane().add("North", panel2);
getContentPane().add("Center", panel1);
// 添加操作動作的監聽器.
for (i = 0; i < str.length; i++)
buttons[i].addActionListener(this);
// 為重置按鈕添加監聽器
reset.addActionListener(this);
display.addActionListener(this);
// The "close" button "X".
addWindowListener(new WindowCloser());
// Initialize the window size.
setSize(800, 800);
// Show the window.
// show(); Using show() while JDK version is below 1.5.
setVisible(true);
// Fit the certain size.
pack();
}   
public void actionPerformed(ActionEvent e) {
Object target = e.getSource();
String label = e.getActionCommand();
if (target == reset)
handleReset();
else if (".".indexOf(label) > 0)
handleNumber(label);
else
handleOperator(label);
}
// Is the first digit pressed?
boolean isFirstDigit = true;
/**
* Number handling.
* @param key the key of the button.
*/
public void handleNumber(String key) {
if (isFirstDigit)
display.setText(key);
else if ((key.equals("."))  (display.getText().indexOf(".") < 0))
display.setText(display.getText() + ".");
else if (!key.equals("."))
display.setText(display.getText() + key);
isFirstDigit = false;
}
/**
* Reset the calculator.
*/
public void handleReset() {
display.setText("0");
isFirstDigit = true;
operator = "=";
}
double number = 0.0;
String operator = "=";
public void handleOperator(String key) {
if (operator.equals("+"))
number += Double.valueOf(display.getText());
else if (operator.equals("-"))
number -= Double.valueOf(display.getText());
else if (operator.equals("*"))
number *= Double.valueOf(display.getText());
else if (operator.equals("/"))
number /= Double.valueOf(display.getText());
else if (operator.equals("="))
number = Double.valueOf(display.getText());
display.setText(String.valueOf(number));
operator = key;
isFirstDigit = true;
}
public static void main(String[] args) {
new JCalculator();
}
}
㈢ 用JAVA編寫一個計算器
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.SwingConstants;
{
/**
*
*/
=1L;
Resultresult=newResult();//定義text的面板
Number_Keynumber_key=newNumber_Key();//定義按鈕面板
//當點擊按鈕+、-、*、/時,com=true
booleancom=false;
//當i=0時說明是我們第一次輸入,字元串text不會累加
inti=0;
//存放text的內容
Stringtext="";
//存放點擊按鈕+、-、*、/之前的數值
doubledefbutton=0;
//+、-、*、/的代號分別為1,2,3,4
intsymbol=0;
//構造函數
Jisuanqi(){
super("WangJiao");//設定標題
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設定關閉窗體時退出程序
JPanelpane=newJPanel();//定義主面板
pane.setLayout(newBorderLayout());
setBounds(380,220,30,80);//前兩個參數是在屏幕上顯示的坐標,後兩個是大小
//替換圖標
ImageIconicon=newImageIcon("F:1.GIF");
//Jisuanqi.class.getResource("APPLE.GIF")
//);
setIconImage(icon.getImage());
pane.add(result,BorderLayout.NORTH);
pane.add(number_key,BorderLayout.CENTER);
pane.add(number_key.equal,BorderLayout.SOUTH);
number_key.one.addActionListener(this);//對1按鈕添加監聽事件
number_key.two.addActionListener(this);//對2按鈕添加監聽事件
number_key.three.addActionListener(this);//對3按鈕添加監聽事件
number_key.four.addActionListener(this);//對4按鈕添加監聽事件
number_key.five.addActionListener(this);//對5按鈕添加監聽事件
number_key.six.addActionListener(this);//對6按鈕添加監聽事件
number_key.seven.addActionListener(this);//對7按鈕添加監聽事件
number_key.eight.addActionListener(this);//對8按鈕添加監聽事件
number_key.nine.addActionListener(this);//對9按鈕添加監聽事件
number_key.zero.addActionListener(this);//對0按鈕添加監聽事件
number_key.ce.addActionListener(this);//對置零按鈕添加監聽事件
number_key.plus.addActionListener(this);//對+按鈕添加監聽事件
number_key.equal.addActionListener(this);//對=按鈕添加監聽事件
number_key.sub.addActionListener(this);//對-按鈕添加監聽事件
number_key.mul.addActionListener(this);//對*按鈕添加監聽事件
number_key.div.addActionListener(this);//對/按鈕添加監聽事件
number_key.point.addActionListener(this);//對.按鈕添加監聽事件
setContentPane(pane);
pack();//初始化窗體大小為正好盛放所有按鈕
}
//各個按鈕觸發的事件
publicvoidactionPerformed(ActionEvente){
/*
*如果是點擊數字按鈕那麼先要判斷是否在此之前點擊了+、-、*、/、=,如果是那麼com=true如果沒有com=
*false;或者是否點擊數字鍵,如果是i=1,如果沒有i=0;
*/
if(e.getSource()==number_key.one){
if(com||i==0){
result.text.setText("1");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"1");
}
}elseif(e.getSource()==number_key.two){
if(com||i==0){
result.text.setText("2");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"2");
}
}elseif(e.getSource()==number_key.three){
if(com||i==0){
result.text.setText("3");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"3");
}
}elseif(e.getSource()==number_key.four){
if(com||i==0){
result.text.setText("4");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"4");
}
}elseif(e.getSource()==number_key.five){
if(com||i==0){
result.text.setText("5");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"5");
}
}elseif(e.getSource()==number_key.six){
if(com||i==0){
result.text.setText("6");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"6");
}
}elseif(e.getSource()==number_key.seven){
if(com||i==0){
result.text.setText("7");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"7");
}
}elseif(e.getSource()==number_key.eight){
if(com||i==0){
result.text.setText("8");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"8");
}
}elseif(e.getSource()==number_key.nine){
if(com||i==0){
result.text.setText("9");
com=false;
i=1;
}else{
text=result.text.getText();
result.text.setText(text+"9");
}
}
/*
*對於0這個按鈕有一定的說法,在我的程序里不會出現如00000這樣的情況,我加了判斷條件就是
*如果text中的數值=0就要判斷在這個數值中是否有.存在?如果有那麼就在原來數值基礎之上添加0;否則保持原來的數值不變
*/
elseif(e.getSource()==number_key.zero){//result.text.getText()是得到text里內容的意思
if(com||i==0){
result.text.setText("0");
com=false;
i=1;
}else{
text=result.text.getText();
if(Float.parseFloat(text)>0||Float.parseFloat(text)<0){//Float.parseFloat(text)就是類型轉換了,下面都是一樣
result.text.setText(text+"0");
}else{
if(text.trim().indexOf(".")==-1){
result.text.setText(text);
}else{
result.text.setText(text+"0");
}
}
}
}elseif(e.getSource()==number_key.ce){
result.text.setText("0");
i=0;
com=true;
//text="";
defbutton=0;
}
/*
*本程序不會讓一個數值中出現2個以上的小數點.具體做法是:判斷是否已經存在.存在就不添加,不存在就添加.
*/
elseif(e.getSource()==number_key.point){
if(com||i==0){
result.text.setText("0.");
com=false;
i=1;
}else{
text=result.text.getText();
if(text.trim().indexOf(".")==-1){
result.text.setText(text+".");
}else{
result.text.setText(text);
}
}
}//獲得點擊+之前的數值
elseif(e.getSource()==number_key.plus){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
symbol=1;
}//獲得點擊-之前的數值
elseif(e.getSource()==number_key.sub){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
symbol=2;
}//獲得點擊*之前的數值
elseif(e.getSource()==number_key.mul){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
System.out.println(defbutton);
symbol=3;
}//獲得點擊/之前的數值
elseif(e.getSource()==number_key.div){
com=true;
i=0;
defbutton=Double.parseDouble(result.text.getText());
symbol=4;
}elseif(e.getSource()==number_key.equal){
switch(symbol){
case1:{//計算加法
doublead=defbutton
+Double.parseDouble(result.text.getText());
result.text.setText(ad+"");
i=0;
text="";
break;
}
case2:{//計算減法
doublead=defbutton
-Double.parseDouble(result.text.getText());
result.text.setText(String.valueOf(ad));
i=0;
text="";
break;
}
case3:{//計算乘法
doublead=defbutton
*Double.parseDouble(result.text.getText());
result.text.setText(ad+"");
i=0;
text="";
break;
}
case4:{//計算除法
doublead=defbutton
/Double.parseDouble(result.text.getText());
result.text.setText(ad+"");
i=0;
text="";
break;
}
}
System.out.println(com);
}
System.out.println(result.text.getText());
}
@SuppressWarnings("deprecation")
publicstaticvoidmain(String[]args){
Jisuanqiloveyou=newJisuanqi();
loveyou.show();
}
}
//計算器數字按鈕定義面板
classNumber_KeyextendsJPanel{
/**
*
*/
=1L;
JButtonzero=newJButton("0");//數字鍵0
JButtonone=newJButton("1");//數字鍵1
JButtontwo=newJButton("2");//數字鍵2
JButtonthree=newJButton("3");//數字鍵3
JButtonfour=newJButton("4");//數字鍵4
JButtonfive=newJButton("5");//數字鍵5
JButtonsix=newJButton("6");//數字鍵6
JButtonseven=newJButton("7");//數字鍵7
JButtoneight=newJButton("8");//數字鍵8
JButtonnine=newJButton("9");//數字鍵9
JButtonplus=newJButton("+");
JButtonsub=newJButton("-");
JButtonmul=newJButton("*");
JButtondiv=newJButton("/");
JButtonequal=newJButton("=");
JButtonce=newJButton("清零");//置零鍵
JButtonpoint=newJButton(".");
Number_Key(){
setLayout(newGridLayout(4,4,1,1));//定義布局管理器為網格布局
setBackground(Color.blue);//設置背景顏色
//添加按鈕
add(one);
add(two);
add(three);
add(four);
add(five);
add(six);
add(seven);
add(eight);
add(nine);
add(zero);
add(plus);
add(sub);
add(mul);
add(div);
add(point);
add(equal);
add(ce);
}
}
//計算器顯示結果的窗體
classResultextendsJPanel{
/**
*
*/
=1L;
//text先是輸入和結果
JTextFieldtext=newJTextField("0");
@SuppressWarnings("deprecation")
Result(){//講輸入的數字或得到的結果在text的右邊顯示
text.setHorizontalAlignment(SwingConstants.RIGHT);
text.enable(false);//文本框不能編輯
setLayout(newBorderLayout());//設定布局管理器邊框布局
add(text,BorderLayout.CENTER);//text放置在窗體的中間
}
}
直接復制保存成Jisuanqi.java可以直接運行了

㈣ JAVA設計計算器
packagecn.hnpi;
importjava.awt.BorderLayout;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
{
JButtonb0=newJButton("0");
JButtonb1=newJButton("1");
JButtonb2=newJButton("2");
JButtonb3=newJButton("3");
JButtonb4=newJButton("4");
JButtonb5=newJButton("5");
JButtonb6=newJButton("6");
JButtonb7=newJButton("7");
JButtonb8=newJButton("8");
JButtonb9=newJButton("9");
JButtonjiaButton=newJButton("+");
JButtonjianButton=newJButton("-");
JButtonchengButton=newJButton("*");
JButtonchuButton=newJButton("/");
JButtonyuButton=newJButton("%");
JButtonjjButton=newJButton("+/-");
JButtonsqrtButton=newJButton("sqrt");
JButtondianButton=newJButton(".");
JButtondengButton=newJButton("=");
JButtonButton=newJButton("1/x");
JButtonbackButton=newJButton("Backpace");
JButtoncButton=newJButton("C");
publicdoubleop1;
publicdoubleop2;
publicstaticfinalintJIA=0;
publicstaticfinalintJIAN=1;
publicstaticfinalintCHENG=2;
publicstaticfinalintCHU=3;
publicstaticfinalintJJ=4;
publicstaticfinalintDIAN=5;
publicintcurrent0p=0;
privatebooleanopEnd=false;
JPanelpanel1=newJPanel();
JPanelpanel2=newJPanel();
JPanelpanel3=newJPanel();
JPanelpanel4=newJPanel();
JTextFieldresult=newJTextField(20);
publicCalculator(){
initPanel2();
initPanel3();
panel2.setLayout(newGridLayout(5,4));
panel1.setLayout(newBorderLayout());
panel1.add(panel3,BorderLayout.NORTH);//設置位置
panel1.add(panel2,BorderLayout.CENTER);//設置位置
getContentPane().add(panel1);
addActionListeners();
setSize(260,260);
setLocation(500,300);
setVisible(true);
setDefaultCloseOperation(Calculator.EXIT_ON_CLOSE);
this.setResizable(false);
this.setTitle("計算器");
}
privatevoidinitPanel2(){
//把組件添加到相應的panel上
panel2.add(b7);
panel2.add(b8);
panel2.add(b9);
panel2.add(chuButton);
panel2.add(b4);
panel2.add(b5);
panel2.add(b6);
panel2.add(chengButton);
panel2.add(b1);
panel2.add(b2);
panel2.add(b3);
panel2.add(jianButton);
panel2.add(b0);
panel2.add(jjButton);
panel2.add(dianButton);
panel2.add(jiaButton);
panel2.add(Button);
panel2.add(yuButton);
panel2.add(sqrtButton);
panel2.add(dengButton);
}
privatevoidaddActionListeners(){
ActionHandlerc=newActionHandler();
b0.addActionListener(c);
b1.addActionListener(c);
b2.addActionListener(c);
b3.addActionListener(c);
b4.addActionListener(c);
b5.addActionListener(c);
b6.addActionListener(c);
b7.addActionListener(c);
b8.addActionListener(c);
b9.addActionListener(c);
jiaButton.addActionListener(c);
dengButton.addActionListener(c);
chengButton.addActionListener(c);
chuButton.addActionListener(c);
jianButton.addActionListener(c);
jjButton.addActionListener(c);
dianButton.addActionListener(c);
sqrtButton.addActionListener(c);
yuButton.addActionListener(c);
Button.addActionListener(c);
backButton.addActionListener(c);
cButton.addActionListener(c);
}
{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b0){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"0");
}
if(e.getSource()==b1){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"1");
opEnd=true;
}
if(e.getSource()==b2){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"2");
opEnd=true;
}
if(e.getSource()==b3){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"3");
opEnd=true;
}
if(e.getSource()==b4){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"4");
opEnd=true;
}
if(e.getSource()==b5){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"5");
opEnd=true;
}
if(e.getSource()==b6){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"6");
opEnd=true;
}
if(e.getSource()==b7){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"7");
opEnd=true;
}
if(e.getSource()==b8){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"8");
opEnd=true;
}
if(e.getSource()==b9){
if(opEnd==false){
result.setText("");
}
result.setText(result.getText()+"9");
opEnd=true;
}
try{
if(e.getSource()==jiaButton){
op1=Double.parseDouble(result.getText());
//2、說明操作數已經輸入完畢
opEnd=false;
current0p=JIA;
}
if(e.getSource()==chengButton){
op1=Double.parseDouble(result.getText());
//2、說明操作數已經輸入完畢
opEnd=false;
current0p=CHENG;
}
if(e.getSource()==chuButton){
op1=Double.parseDouble(result.getText());
//2、說明操作數已經輸入完畢
opEnd=false;
current0p=CHU;
}
if(e.getSource()==jianButton){
op1=Double.parseDouble(result.getText());
//2、說明操作數已經輸入完畢
opEnd=false;
current0p=JIAN;
}
if(e.getSource()==jjButton){
Stringtmp=result.getText();
if(tmp.equals("")||tmp.equals("0")){
return;
}
if(tmp.charAt(0)=='-'){
tmp=tmp.substring(1);
}else{
tmp='-'+tmp;
}
result.setText(tmp);
}
if(e.getSource()==dianButton){
Stringtmp=result.getText();
if(tmp.equals("")){
return;
}
if(tmp.indexOf(".")!=-1){
return;
}
tmp=tmp+".";
result.setText(tmp);
}
if(e.getSource()==sqrtButton){
Stringtmp=result.getText();
if(tmp.equals("")){
return;
}
doubled;
d=Double.parseDouble(tmp);//先定義一個double類型的d
if(d<0){
result.setText("不能對負數求平方根!");
return;
}
op2=Math.sqrt(d);
result.setText(op2+"");
}
if(e.getSource()==backButton){
Strings=result.getText();
result.setText("");
for(inti=0;i<s.length()-1;i++){
chara=s.charAt(i);
result.setText(result.getText()+a);
}
}
if(e.getSource()==cButton){
result.setText("0");
opEnd=false;
}
if(e.getSource()==dengButton){
op2=Double.parseDouble(result.getText());
switch(current0p){
caseJIA:
result.setText(op1+op2+"");
break;
caseJIAN:
result.setText(op1-op2+"");
break;
caseCHENG:
result.setText(op1*op2+"");
break;
caseCHU:
if(op2==0){
result.setText("被除數不能為零!");
break;
}
result.setText(op1/op2+"");
break;
}
opEnd=false;
}
}catch(Exceptione1){
result.setText("Wrong");
opEnd=false;
}
}
}
privatevoidinitPanel3(){
panel3.setLayout(newGridLayout(2,1));
panel3.add(result);
panel3.add(panel4);
panel4.setLayout(newGridLayout(1,2));
panel4.add(backButton);
panel4.add(cButton);
//panel3.setPreferredSize(newDimension(260,65));
}
publicstaticvoidmain(String[]args){
Calculatorc=newCalculator();//生成類的實例
}
}

㈤ 怎麼用java編寫一個計算器
有一個現成的參考一下吧
importjava.awt.event.ActionEvent;
{
protectedStringstr="";
protectedbooleanisChar=true;
protectedbooleanisEqual=false;
protectedJTextFieldtextField;
publicApplication(){
Listenerlisterner=newListener(this);
getContentPane().setLayout(null);
JButtonbutton=newJButton("7");
button.addActionListener(listerner);
button.setBounds(12,69,43,27);
getContentPane().add(button);
textField=newJTextField();
textField.setText("0");
textField.setEditable(false);
textField.setHorizontalAlignment(JTextField.RIGHT);
textField.setBounds(12,22,377,27);
getContentPane().add(textField);
textField.setColumns(10);
JButtonbutton_1=newJButton("8");
button_1.addActionListener(listerner);
button_1.setBounds(103,69,43,27);
getContentPane().add(button_1);
JButtonbutton_2=newJButton("9");
button_2.addActionListener(listerner);
button_2.setBounds(182,69,43,27);
getContentPane().add(button_2);
JButtonbutton_3=newJButton("4");
button_3.addActionListener(listerner);
button_3.setBounds(12,106,43,27);
getContentPane().add(button_3);
JButtonbutton_4=newJButton("5");
button_4.addActionListener(listerner);
button_4.setBounds(103,106,43,27);
getContentPane().add(button_4);
JButtonbutton_5=newJButton("6");
button_5.addActionListener(listerner);
button_5.setBounds(182,106,43,27);
getContentPane().add(button_5);
JButtonbutton_6=newJButton("1");
button_6.addActionListener(listerner);
button_6.setBounds(12,143,43,27);
getContentPane().add(button_6);
JButtonbutton_7=newJButton("2");
button_7.addActionListener(listerner);
button_7.setBounds(103,143,43,27);
getContentPane().add(button_7);
JButtonbutton_8=newJButton("3");
button_8.addActionListener(listerner);
button_8.setBounds(182,143,43,27);
getContentPane().add(button_8);
JButtonbutton_9=newJButton("+");
button_9.addActionListener(listerner);
button_9.setBounds(269,72,43,27);
getContentPane().add(button_9);
JButtonbutton_10=newJButton("-");
button_10.addActionListener(listerner);
button_10.setBounds(346,72,43,27);
getContentPane().add(button_10);
JButtonbutton_11=newJButton("*");
button_11.addActionListener(listerner);
button_11.setBounds(269,109,43,27);
getContentPane().add(button_11);
JButtonbutton_12=newJButton("/");
button_12.addActionListener(listerner);
button_12.setBounds(346,109,43,27);
getContentPane().add(button_12);
JButtonbutton_13=newJButton("=");
button_13.addActionListener(listerner);
button_13.setBounds(346,143,43,27);
getContentPane().add(button_13);
JButtonbutton_14=newJButton("0");
button_14.addActionListener(listerner);
button_14.setBounds(103,180,43,27);
getContentPane().add(button_14);
JButtonbtnReset=newJButton("reset");
btnReset.addActionListener(listerner);
btnReset.setBounds(269,180,118,27);
getContentPane().add(btnReset);
JButtonbutton_15=newJButton(".");
button_15.addActionListener(listerner);
button_15.setBounds(269,146,43,27);
getContentPane().add(button_15);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setSize(442,260);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
publicstaticvoidmain(String[]args){
newApplication();
}
}
{
privateApplicationapp=null;
publicListener(Applicationapp){
this.app=app;
}
publicvoidactionPerformed(ActionEvente){
Stringvalue=e.getActionCommand();
if(value.matches("[0-9.]")){
if(app.isChar){
app.textField.setText("");
app.isChar=false;
}
if(app.isEqual&&app.str.matches("[0-9.]*")){
app.str="";
app.isEqual=false;
}
app.str+=value;
app.textField.setText(app.textField.getText()+value);
}elseif(value.matches("[\+\-\*/]")){
if(!app.str.substring(app.str.length()-1)
.matches("[\+\-\*/]")){
app.str+=value;
app.isChar=true;
}
}elseif("=".equals(value)){
app.isEqual=true;
if(app.str.substring(app.str.length()-1).matches("[\+\-]")){
app.str+="0";
}elseif(app.str.substring(app.str.length()-1)
.matches("[\*/]")){
app.str+="1";
}
Interpreterbsh=newInterpreter();
Stringobj=null;
try{
obj=bsh.eval(app.str).toString();
}catch(Exceptionexception){
System.out.println(exception.getMessage());
}
System.out.println(app.str);
app.textField.setText(obj);
app.str=obj;
app.isChar=true;
}else{
app.str="";
app.textField.setText("0");
}
}
}
㈥ java設計一個計算器
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class jisuanqi extends Applet implements ActionListener
{
 double x=0;
 double y=0;
 double w;
 int h=0;
 TextField t=new TextField(15);
 Button b1=new Button("1");
 Button b2=new Button("2");
 Button b3=new Button("3");
 Button b4=new Button("4");
 Button b5=new Button("5");
 Button b6=new Button("6");
 Button b7=new Button("7");
 Button b8=new Button("8");
 Button b9=new Button("9");
 Button b0=new Button("0");
 Button b10=new Button("+");
 Button b11=new Button("-");
 Button b12=new Button("*");
 Button b13=new Button("/");
 Button b14=new Button("C");
 Button b15=new Button("=");
 
 public void init()
 {
  setLayout(new BorderLayout());
  add(t,"North");
  Panel p1=new Panel(); 
        add(p1,"Center");
        p1.setLayout(new GridLayout(4,4,5,5));
        p1.add(b1);
        p1.add(b2);
        p1.add(b3);
        p1.add(b14);
        p1.add(b4);
        p1.add(b5);
        p1.add(b6);
        p1.add(b10);
        p1.add(b7);
        p1.add(b8);
        p1.add(b9);
        p1.add(b11);
        p1.add(b0);
        p1.add(b12);
        p1.add(b13);
        p1.add(b15);
    b1.addActionListener(this);
    b2.addActionListener(this);
    b3.addActionListener(this);
    b4.addActionListener(this);
    b5.addActionListener(this);
    b6.addActionListener(this);
    b7.addActionListener(this);
    b8.addActionListener(this);
    b9.addActionListener(this);
    b10.addActionListener(this);
    b11.addActionListener(this);
    b12.addActionListener(this);
    b13.addActionListener(this);
    b14.addActionListener(this);
    b15.addActionListener(this);
    b0.addActionListener(this);
 }
 
 public void actionPerformed(ActionEvent e)
 {
  String ts=e.getActionCommand();   
  char ysf=ts.charAt(0);    
        if(ts=="C") t.setText("");
        else if(ts=="+")
        {
         x=Integer.parseInt(t.getText()); 
         t.setText("");
            h=1;                              
        }
        else if(ts=="-")
        {
         x=Integer.parseInt(t.getText()); 
         t.setText("");
         h=2;                               
        }
        else if(ts=="*")
        {
         x=Integer.parseInt(t.getText()); 
         t.setText("");
         h=3;                               
        }
        else if(ts=="/")
        {
         x=Integer.parseInt(t.getText()); 
         t.setText("");
         h=4;                               
        }
        else if(ts.equals("="))
        {
         y=Integer.parseInt(t.getText());
         switch(h)
         {
          case 1:w = x+y; break;
          case 2:w = x-y; break;
          case 3:w = x*y; break;
          case 4:w = x/y;
         }
         t.setText(String.valueOf(w));
        }
        else      
        {
         t.setText(t.getText()+ts);
        }
 }
}
㈦ 用Java程序設計語言設計一個計算器
import javax.swing.*;//新的窗口組件包
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener
{
    private boolean dotExist, operated, equaled; // 幫助運算的布爾變數
    private double storedNumber; // 目前的結果
    private char lastOperator; // 表示上一運算符
    private JTextField operation; // 顯示欄
    private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 運算符
    private JButton[] numbers; // 數字
    // 構造者
    public Calculator()
    {
        setTitle("簡單計算器");
        // 初始化變數
        dotExist = false; // 表示當前的數是否有小數點
        operated = false; // 表示任意運算符是否被按下
        equaled = false; // 表示等號是否被按下
        storedNumber = 0;
        lastOperator = '?';
        // 初始化窗口變數
        operation = new JTextField("0");
        operation.setEditable(false); //設置文本框的可編輯性
        numbers = new JButton[10];
        for (int i = 0; i < 10; i++)
          numbers[i] = new JButton("" + i);
        dot = new JButton(".");
        plus = new JButton("+");
        minus = new JButton("-");
        multi = new JButton("*");
        div = new JButton("/");
        sqrt = new JButton("√");
        equal = new JButton("=");
        changePN = new JButton("±");
        clear = new JButton("NC");
        // 將窗口物體放入窗口
        GridBagLayout layout = new GridBagLayout();
        getContentPane().setLayout(layout);
        addComponent(layout, operation, 0, 0, 4, 1);
        addComponent(layout, numbers[1], 1, 0, 1, 1);
        addComponent(layout, numbers[2], 1, 1, 1, 1);
        addComponent(layout, numbers[3], 1, 2, 1, 1);
        addComponent(layout, numbers[4], 2, 0, 1, 1);
        addComponent(layout, numbers[5], 2, 1, 1, 1);
        addComponent(layout, numbers[6], 2, 2, 1, 1);
        addComponent(layout, numbers[7], 3, 0, 1, 1);
        addComponent(layout, numbers[8], 3, 1, 1, 1);
        addComponent(layout, numbers[9], 3, 2, 1, 1);
        addComponent(layout, dot, 4, 0, 1, 1);
        addComponent(layout, numbers[0], 4, 1, 1, 1);
        addComponent(layout, sqrt, 4, 2, 1, 1);
        addComponent(layout, plus, 1, 3, 1, 1);
        addComponent(layout, minus, 2, 3, 1, 1);
        addComponent(layout, multi, 3, 3, 1, 1);
        addComponent(layout, div, 4, 3, 1, 1);
        addComponent(layout, equal, 5, 0, 2, 1);
        addComponent(layout, changePN, 5, 2, 1, 1);
        addComponent(layout, clear, 5, 3, 1, 1);
    }
    // 對按鈕進行反應的方法
    public void actionPerformed(ActionEvent e)
    {
        JButton btn = (JButton)e.getSource();
        if (btn == clear)
        {
            operation.setText("0");
            dotExist = false;
            storedNumber = 0;
            lastOperator = '?';
        }
        else if (btn == equal)
        {
            operate('=');
            equaled = true;
        }
        else if (btn == plus)
        {
            operate('+');
            equaled = false;
        }
        else if (btn == minus)
        {
            operate('-');
            equaled = false;
        }
        else if (btn == multi)
        {
            operate('*');
            equaled = false;
        }
        else if (btn == div)
        {
            operate('/');
            equaled = false;
        }
        else if (btn == changePN)
        {
            operate('p');
            operate('=');
            equaled = true;
        }
        else if (btn == sqrt)
        {
            operate('s');
            operate('=');
            equaled = true;
        }
        else
        {
            if (equaled)
              storedNumber = 0;
            for (int i = 0; i < 10; i++)
              if (btn == numbers[i])
              {
                  if (operation.getText().equals("0"))
                    operation.setText("" + i);
                  else if(! operated)
                    operation.setText(operation.getText() + i);
                  else
                  {
                      operation.setText("" + i);
                      operated = false;
                  }
              }
            if (btn == dot && ! dotExist)
            {
                operation.setText(operation.getText() + ".");
                dotExist = true;
            }
        }
    }
    // 進行運算的方法
    private void operate(char operator)
    {
        double currentNumber = Double.valueOf(operation.getText()).doubleValue();
        if (lastOperator == '?')
          storedNumber = currentNumber;
        else if (lastOperator == '+')
          storedNumber += currentNumber;
        else if (lastOperator == '-')
          storedNumber -= currentNumber;
        else if (lastOperator == '*')
          storedNumber *= currentNumber;
        else if (lastOperator == '/')
          storedNumber /= currentNumber;
        else if (lastOperator == 'p')
          storedNumber *= -1;
        else if (lastOperator == 's')
          storedNumber = Math.sqrt(currentNumber);
        else if (lastOperator == '=' && equaled)
          storedNumber = currentNumber;
        operation.setText("" + storedNumber);
        operated = true;
        lastOperator = operator;
    }
    // 快捷使用GridBagLayout的方法
    private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height)
    {
        GridBagConstraints constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.BOTH;
        constraints.insets = new Insets(10, 2, 10, 2);
        constraints.weightx = 100;
        constraints.weighty = 100;
        constraints.gridx = col;
        constraints.gridy = row;
        constraints.gridwidth = width;
        constraints.gridheight = height;
        layout.setConstraints(component, constraints);
        if (component instanceof JButton)
          ((JButton)component).addActionListener(this);
        getContentPane().add(component);
    }
    // 主方法初始化並顯示窗口
    public static void main(String[] args)
    {
        Calculator calc = new Calculator();
        calc.setSize(230, 280);
        calc.setVisible(true);
    }
}
㈧ 用Java設計一個簡單的計算器。
無聊寫了個,修復了下Bug:
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JTextField;
{
=1L;
privateJButtonplus,rece,multiply,divice,reset;
privateJTextFieldone,two,result;
privatebooleandevice_falg=false;
privatefinalintwidth=400,height=300;
publicCalculate(){
super("修改密碼");
this.setLayout(null);
this.setSize(width,height);
init();
Layout();
}
publicvoidinit(){
plus=newJButton("加");
rece=newJButton("減");
multiply=newJButton("乘");
divice=newJButton("除");
reset=newJButton("清空");
one=newJTextField();
two=newJTextField();
result=newJTextField();
}
publicvoidLayout(){
this.add(newJLabel("第一個數")).setBounds(20,10,60,80);
this.add(one).setBounds(100,38,100,25);
this.add(newJLabel("第二個數")).setBounds(20,40,60,80);
this.add(two).setBounds(100,70,100,25);
this.add(newJLabel("結果")).setBounds(20,85,60,80);
this.add(result).setBounds(100,110,100,25);
this.add(plus).setBounds(70,170,80,25);
this.add(rece).setBounds(200,170,80,25);
this.add(multiply).setBounds(70,200,80,25);
this.add(divice).setBounds(200,200,80,25);
this.add(reset).setBounds(300,220,80,25);
plus.addActionListener(this);
rece.addActionListener(this);
multiply.addActionListener(this);
divice.addActionListener(this);
reset.addActionListener(this);
this.setVisible(true);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
publicbooleanFormat(){
booleanFLAG=false;
booleanflag=false;
Stringone=this.one.getText().toString().trim();
Stringtwo=this.two.getText().toString().trim();
if(one==null||one.equals("")||two==null||two.equals("")){
JOptionPane.showMessageDialog(getParent(),"請輸入完整信息!");
FLAG=false;
flag=true;
}
booleanboll_1=one.matches("[\d]{1,100}");
booleanboll_2=two.matches("[\d]{1,100}");
booleanboll_3=one.matches("[\d]{1,100}+[.]+[\d]{1,100}");
booleanboll_4=two.matches("[\d]{1,100}+[.]+[\d]{1,100}");
if(flag){
returnfalse;
}
if((boll_1&&boll_2)||(boll_3&&boll_4)||(boll_1&&boll_4)
||(boll_3&&boll_2)){
FLAG=true;
}else{
JOptionPane.showMessageDialog(getParent(),"請輸入數字!");
FLAG=false;
}
if(FLAG&&device_falg){
if(Double.parseDouble(two)==0){
JOptionPane.showMessageDialog(getParent(),"被除數不能為0!");
FLAG=false;
device_falg=false;
}
}
returnFLAG;
}
publicdoublePlus(doubleone,doubletwo){
returnone+two;
}
publicdoubleMultiply(doubleone,doubletwo){
returnone*two;
}
publicdoubleDivice(doubleone,doubletwo){
returnone/two;
}
publicdoubleRece(doubleone,doubletwo){
returnone-two;
}
publicvoidClear(){
one.setText("");
two.setText("");
result.setText("");
}
@Override
publicvoidactionPerformed(ActionEvente){
Objecto=e.getSource();
if(o==reset){
Clear();
return;
}
if(o==divice){
device_falg=true;
}
if(!Format()){
return;
}
doubleone=Double.parseDouble(this.one.getText());
doubletwo=Double.parseDouble(this.two.getText());
doubleresult=0;
if(o==plus){
result=Plus(one,two);
}elseif(o==rece){
result=Rece(one,two);
}elseif(o==multiply){
result=Multiply(one,two);
}elseif(o==divice){
result=Divice(one,two);
}
this.result.setText(""+result);
}
publicstaticvoidmain(String[]args){
newCalculate();
}
}
㈨ 怎麼用JAVA編程編寫一個計算器
打開IED:打開自己java編程的軟體,採用的是eclipse軟體。
建立java工程。
編寫類。
㈩ java編寫一個計算器類
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class Jisuanqi extends JFrame implements ActionListener {
/**
 * 
 */
private static final long serialVersionUID = 1L;
Result result = new Result(); // 定義text的面板
Number_Key number_key = new Number_Key(); // 定義按鈕面板
// 當點擊按鈕+、-、*、/時,com = true
boolean com = false;
// 當i=0時說明是我們第一次輸入,字元串text不會累加
int i = 0;
// 存放text的內容
String text = "";
// 存放點擊按鈕+、-、*、/之前的數值
double defbutton = 0;
// +、-、*、/的代號分別為1,2,3,4
int symbol = 0;
// 構造函數
Jisuanqi() {
super("計算器"); // 設定標題
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 設定關閉窗體時退出程序
JPanel pane = new JPanel(); // 定義主面板
pane.setLayout(new BorderLayout());
setBounds(380, 220, 30, 80); // 前兩個參數是在屏幕上顯示的坐標,後兩個是大小
// 替換圖標
ImageIcon icon = new ImageIcon("F:1.GIF");
// Jisuanqi.class.getResource("APPLE.GIF")
// );
setIconImage(icon.getImage());
pane.add(result, BorderLayout.NORTH);
pane.add(number_key, BorderLayout.CENTER);
pane.add(number_key.equal, BorderLayout.SOUTH);
number_key.one.addActionListener(this); // 對1按鈕添加監聽事件
number_key.two.addActionListener(this); // 對2按鈕添加監聽事件
number_key.three.addActionListener(this); // 對3按鈕添加監聽事件
number_key.four.addActionListener(this); // 對4按鈕添加監聽事件
number_key.five.addActionListener(this); // 對5按鈕添加監聽事件
number_key.six.addActionListener(this); // 對6按鈕添加監聽事件
number_key.seven.addActionListener(this); // 對7按鈕添加監聽事件
number_key.eight.addActionListener(this); // 對8按鈕添加監聽事件
number_key.nine.addActionListener(this); // 對9按鈕添加監聽事件
number_key.zero.addActionListener(this); // 對0按鈕添加監聽事件
number_key.ce.addActionListener(this); // 對置零按鈕添加監聽事件
number_key.plus.addActionListener(this); // 對+按鈕添加監聽事件
number_key.equal.addActionListener(this); // 對=按鈕添加監聽事件
number_key.sub.addActionListener(this); // 對-按鈕添加監聽事件
number_key.mul.addActionListener(this); // 對*按鈕添加監聽事件
number_key.div.addActionListener(this); // 對/按鈕添加監聽事件
number_key.point.addActionListener(this); // 對.按鈕添加監聽事件
setContentPane(pane);
pack(); // 初始化窗體大小為正好盛放所有按鈕
}
// 各個按鈕觸發的事件
public void actionPerformed(ActionEvent e) {
/*
 * 如果是點擊數字按鈕那麼先要判斷是否在此之前點擊了+、-、*、/、=,如果是那麼com=true 如果沒有com=
 * false;或者是否點擊數字鍵,如果是i = 1,如果沒有 i = 0;
 */
if (e.getSource() == number_key.one) {
if (com || i == 0) {
result.text.setText("1");
com = false;
i = 1;
} else {
text = result.text.getText();
result.text.setText(text + "1");
}
} else if (e.getSource() == number_key.two) {
if (com || i == 0) {
result.text.setText("2");
com = false;
i = 1;
} else {
text = result.text.getText();
result.text.setText(text + "2");
}
} else if (e.getSource() == number_key.three) {
if (com || i == 0) {
result.text.setText("3");
com = false;
i = 1;
} else {
text = result.text.getText();
result.text.setText(text + "3");
}
} else if (e.getSource() == number_key.four) {
if (com || i == 0) {
result.text.setText("4");
com = false;
i = 1;
} else {
text = result.text.getText();
result.text.setText(text + "4");
}
} else if (e.getSource() == number_key.five) {
if (com || i == 0) {
result.text.setText("5");
com = false;
i = 1;
} else {
text = result.text.getText();
result.text.setText(text + "5");
}
} else if (e.getSource() == number_key.six) {
if (com || i == 0) {
result.text.setText("6");
com = false;
i = 1;
} else {
text = result.text.getText();
result.text.setText(text + "6");
}
} else if (e.getSource() == number_key.seven) {
if (com || i == 0) {
result.text.setText("7");
com = false;
i = 1;
} else {
text = result.text.getText();
result.text.setText(text + "7");
}
} else if (e.getSource() == number_key.eight) {
if (com || i == 0) {
result.text.setText("8");
com = false;
i = 1;
} else {
text = result.text.getText();
result.text.setText(text + "8");
}
} else if (e.getSource() == number_key.nine) {
if (com || i == 0) {
result.text.setText("9");
com = false;
i = 1;
} else {
text = result.text.getText();
result.text.setText(text + "9");
}
}
/*
 * 對於0這個按鈕有一定的說法,在程序里不會出現如00000這樣的情況,加了判斷條件就是
 * 如果text中的數值=0就要判斷在這個數值中是否有.存在?如果有那麼就在原來數值基礎之上添 加0;否則保持原來的數值不變
 */
else if (e.getSource() == number_key.zero) { // result.text.getText()是得到text里內容的意思
if (com || i == 0) {
result.text.setText("0");
com = false;
i = 1;
} else {
text = result.text.getText();
if (Float.parseFloat(text) > 0 || Float.parseFloat(text) < 0) { // Float.parseFloat(text)就是類型轉換了,下面都是一樣
result.text.setText(text + "0");
} else {
if (text.trim().indexOf(".") == -1) {
result.text.setText(text);
} else {
result.text.setText(text + "0");
}
}
}
} else if (e.getSource() == number_key.ce) {
result.text.setText("0");
i = 0;
com = true;
// text = "";
defbutton = 0;
}
/*
 * 本程序不會讓一個數值中出現2個以上的小數點.具體做法是:判斷是否已經存在.存在就不添加, 不存在就添加.
 */
else if (e.getSource() == number_key.point) {
if (com || i == 0) {
result.text.setText("0.");
com = false;
i = 1;
} else {
text = result.text.getText();
if (text.trim().indexOf(".") == -1) {
result.text.setText(text + ".");
} else {
result.text.setText(text);
}
}
} // 獲得點擊+之前的數值
else if (e.getSource() == number_key.plus) {
com = true;
i = 0;
defbutton = Double.parseDouble(result.text.getText());
symbol = 1;
} // 獲得點擊-之前的數值
else if (e.getSource() == number_key.sub) {
com = true;
i = 0;
defbutton = Double.parseDouble(result.text.getText());
symbol = 2;
} // 獲得點擊*之前的數值
else if (e.getSource() == number_key.mul) {
com = true;
i = 0;
defbutton = Double.parseDouble(result.text.getText());
System.out.println(defbutton);
symbol = 3;
} // 獲得點擊/之前的數值
else if (e.getSource() == number_key.div) {
com = true;
i = 0;
defbutton = Double.parseDouble(result.text.getText());
symbol = 4;
} else if (e.getSource() == number_key.equal) {
switch (symbol) {
case 1: { // 計算加法
double ad = defbutton
+ Double.parseDouble(result.text.getText());
result.text.setText(ad + "");
i = 0;
text = "";
break;
}
case 2: { // 計算減法
double ad = defbutton
- Double.parseDouble(result.text.getText());
result.text.setText(String.valueOf(ad));
i = 0;
text = "";
break;
}
case 3: { // 計算乘法
double ad = defbutton
* Double.parseDouble(result.text.getText());
result.text.setText(ad + "");
i = 0;
text = "";
break;
}
case 4: { // 計算除法
double ad = defbutton
/ Double.parseDouble(result.text.getText());
result.text.setText(ad + "");
i = 0;
text = "";
break;
}
}
System.out.println(com);
}
System.out.println(result.text.getText());
}
@SuppressWarnings("deprecation")
public static void main(String[] args) {
Jisuanqi loveyou = new Jisuanqi();
loveyou.show();
}
}
// 計算器數字按鈕定義面板
class Number_Key extends JPanel {
/**
 * 
 */
private static final long serialVersionUID = 1L;
JButton zero = new JButton("0"); // 數字鍵0
JButton one = new JButton("1"); // 數字鍵1
JButton two = new JButton("2"); // 數字鍵2
JButton three = new JButton("3"); // 數字鍵3
JButton four = new JButton("4"); // 數字鍵4
JButton five = new JButton("5"); // 數字鍵5
JButton six = new JButton("6"); // 數字鍵6
JButton seven = new JButton("7"); // 數字鍵7
JButton eight = new JButton("8"); // 數字鍵8
JButton nine = new JButton("9"); // 數字鍵9
JButton plus = new JButton("+");
JButton sub = new JButton("-");
JButton mul = new JButton("*");
JButton div = new JButton("/");
JButton equal = new JButton("=");
JButton ce = new JButton("清零"); // 置零鍵
JButton point = new JButton(".");
Number_Key() {
setLayout(new GridLayout(4, 4, 1, 1)); // 定義布局管理器為網格布局
setBackground(Color.blue); // 設置背景顏色
// 添加按鈕
add(one);
add(two);
add(three);
add(four);
add(five);
add(six);
add(seven);
add(eight);
add(nine);
add(zero);
add(plus);
add(sub);
add(mul);
add(div);
add(point);
add(equal);
add(ce);
}
}
// 計算器顯示結果的窗體
class Result extends JPanel {
/**
 * 
 */
private static final long serialVersionUID = 1L;
// text先是輸入和結果
JTextField text = new JTextField("0");
@SuppressWarnings("deprecation")
Result() { // 講輸入的數字或得到的結果在text的右邊顯示
text.setHorizontalAlignment(SwingConstants.RIGHT);
text.enable(false); // 文本框不能編輯
setLayout(new BorderLayout()); // 設定布局管理器邊框布局
add(text, BorderLayout.CENTER); // text放置在窗體的中間
}
}
