package?jisuanqi_new;
創(chuàng)新互聯(lián)建站主營隆回網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機APP定制開發(fā),隆回h5微信小程序定制開發(fā)搭建,隆回網(wǎng)站營銷推廣歡迎隆回等地區(qū)企業(yè)咨詢
import?java.awt.*;
import?java.awt.event.*;
public?class?JiSuanQi_new?implements?ActionListener
{
Panel?p1;//聲明面板p1
TextField?t1;//聲明文本行t1
String[]?label?=?{"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};//聲明標簽數(shù)組label1存放按鈕上的標簽
Button[]?b;//聲明按鈕數(shù)組存放16個按鈕
private?int?i;//聲明i以備后用
private?String?op1?=?"0";//運算數(shù)備用
private?String?operator?=?"+";//運算符備用
private?boolean?append?=?false;//備用
public?JiSuanQi_new()//構(gòu)造方法
{
t1=new?TextField();//初始化文本行t1
b?=?new?Button[label.length];//初始化按鈕數(shù)組b
p1=new?Panel();//初始化面板p1
p1.setLayout(new?GridLayout(4,4,4,4));//使面板選擇網(wǎng)格布局管理器以備儲存16個按鈕(4行4列)
for(int?i=0;ib.length;i++)//利用for循環(huán)把標簽放在按鈕上,使每個按鈕添加事件監(jiān)聽器,在面板p1上添加上16個按鈕
{
b[i]?=?new?Button(label[i]);//把標簽依次放在16個按鈕上
b[i].addActionListener(this);//使每個按鈕添加動作事件監(jiān)聽器
p1.add(b[i]);?//分別將按鈕添加到面板p1上
}
Frame?f=new?Frame("計算器1.0");//初始化窗口f,起名字計算器1.0
f.setLayout(new?BorderLayout());//為窗口選擇邊界布局管理器
f.add(BorderLayout.NORTH,t1);//把文本行他添加到窗口的北部
f.add(BorderLayout.CENTER,p1);//把面吧p1添加到窗口的中間
f.addWindowListener(new?WindowAdapter(){//給窗口f添加窗口事件監(jiān)聽器
public?void?windowClosing(WindowEvent?eve){//運行窗口關(guān)閉方法
System.exit(0);//退出程序
}
});
f.setSize(250,?250);//設(shè)置窗口大小
f.setLocation(200,200);
f.setVisible(true);//顯示窗口
}
public?static?void?main(String?args[])
{
new?JiSuanQi_new();?//調(diào)用構(gòu)造方法
}
public?void?actionPerformed(ActionEvent?ae)
{//按鈕被操作發(fā)生
String?comm?=?ae.getActionCommand();//返回與此動作相關(guān)的命令字符串,即:使用者第一次點擊的按鈕是什么。
if("0123456789".indexOf(comm)!=-1)//如果相關(guān)命令字符串為0~9之間的數(shù)字則執(zhí)行
{
if(append){
String?temp?=?t1.getText();//新數(shù)字
t1.setText(temp+comm);
}else{?????????????????????????//因為此時append為false執(zhí)行這個
t1.setText(comm);?//將文本行t1設(shè)置為相關(guān)命令字符串(你按中的按鈕代碼)
append?=??true;//此時append=true若繼續(xù)按按鈕若繼續(xù)按數(shù)字的話1.第一次的按話不會改變2.非第一次按得話會覆蓋之前按得數(shù)字(即缺點:只能進行單個數(shù)字的計算)
}
}
else?if(("+-*/".indexOf(comm)!=-1))//如果相關(guān)命令字符串為+-*/之間的數(shù)字則執(zhí)行
{
//保存
//t1.setText(comm);
op1?=?t1.getText();//把第一個數(shù)賦值給op1
operator?=?comm;//把命令字符串賦值給operator
append?=?false;//此時append為false即若繼續(xù)按按鈕若按數(shù)字的話將重復(fù)上面的動作,按符號的話將覆蓋之前的符號
}
else?if("=".equals(comm))//如果按的是=號,則按條件進行下面的運算
{
String?op2?=?t1.getText();//op2第二個數(shù)
double?d1?=?Double.parseDouble(op1);
double?d2?=?Double.parseDouble(op2);
if(operator.equals("+")){
d1?=?d1?+?d2?;
}else?if(operator.equals("-")){
d1?=?d1?-?d2;
}else?if(operator.equals("*")){
d1?=?d1?*?d2;
}else?{
d1?=?d1?/?d2;
}
t1.setText(d1+"");//顯示計算結(jié)果
append?=?false;
}
else?if(".".equals(comm))//若是.號繼續(xù)按
{
String?temp?=?t1.getText();
if(temp.indexOf(".")==-1){
t1.setText(temp+".");
append?=?true;
}
}
}
}
給你個現(xiàn)成的,直接編譯運行,請采納
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?JCalculator?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];
/**?計算結(jié)果文本框?*/
private?JTextField?resultText?=?new?JTextField("0");
//?標志用戶按的是否是整個表達式的第一個數(shù)字,或者是運算符后的第一個數(shù)字
private?boolean?firstDigit?=?true;
//?計算的中間結(jié)果。
private?double?resultNum?=?0.0;
//?當前運算的運算符
private?String?operator?=?"=";
//?操作是否合法
private?boolean?operateValidFlag?=?true;
/**
?*?構(gòu)造函數(shù)
?*/
public?JCalculator()?{
super();
//?初始化計算器
init();
//?設(shè)置計算器的背景顏色
this.setBackground(Color.LIGHT_GRAY);
this.setTitle("計算器");
//?在屏幕(500,?300)坐標處顯示計算器
this.setLocation(500,?300);
//?不許修改計算器的大小
this.setResizable(false);
//?使計算器中各組件大小合適
this.pack();
}
/**
?*?初始化計算器
?*/
private?void?init()?{
//?文本框中的內(nèi)容采用右對齊方式
resultText.setHorizontalAlignment(JTextField.RIGHT);
//?不允許修改結(jié)果文本框
resultText.setEditable(false);
//?設(shè)置文本框背景顏色為白色
resultText.setBackground(Color.white);
//?初始化計算器上鍵的按鈕,將鍵放在一個畫板內(nèi)
JPanel?calckeysPanel?=?new?JPanel();
//?用網(wǎng)格布局器,4行,5列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為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);
//?初始化功能鍵,都用紅色標示。將功能鍵放在一個畫板內(nèi)
JPanel?commandsPanel?=?new?JPanel();
//?用網(wǎng)格布局器,1行,3列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為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鍵放在一個畫板內(nèi)
JPanel?calmsPanel?=?new?JPanel();
//?用網(wǎng)格布局管理器,5行,1列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為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畫板放在該畫板內(nèi)
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)?{
//?用戶按了數(shù)字鍵或者小數(shù)點鍵
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)?{
//?如果文本沒有了內(nèi)容,則初始化計算器的各種值
resultText.setText("0");
firstDigit?=?true;
operator?=?"=";
}?else?{
//?顯示新的文本
resultText.setText(text);
}
}
}
/**
?*?處理數(shù)字鍵被按下的事件
?*?
?*?@param?key
?*/
private?void?handleNumber(String?key)?{
if?(firstDigit)?{
//?輸入的第一個數(shù)字
resultText.setText(key);
}?else?if?((key.equals("."))??(resultText.getText().indexOf(".")??0))?{
//?輸入的是小數(shù)點,并且之前沒有小數(shù)點,則將小數(shù)點附在結(jié)果文本框的后面
resultText.setText(resultText.getText()?+?".");
}?else?if?(!key.equals("."))?{
//?如果輸入的不是小數(shù)點,則將數(shù)字附在結(jié)果文本框的后面
resultText.setText(resultText.getText()?+?key);
}
//?以后輸入的肯定不是第一個數(shù)字了
firstDigit?=?false;
}
/**
?*?處理C鍵被按下的事件
?*/
private?void?handleC()?{
//?初始化計算器的各種值
resultText.setText("0");
firstDigit?=?true;
operator?=?"=";
}
/**
?*?處理運算符鍵被按下的事件
?*?
?*?@param?key
?*/
private?void?handleOperator(String?key)?{
if?(operator.equals("/"))?{
//?除法運算
//?如果當前結(jié)果文本框中的值等于0
if?(getNumberFromText()?==?0.0)?{
//?操作不合法
operateValidFlag?=?false;
resultText.setText("除數(shù)不能為零");
}?else?{
resultNum?/=?getNumberFromText();
}
}?else?if?(operator.equals("1/x"))?{
//?倒數(shù)運算
if?(resultNum?==?0.0)?{
//?操作不合法
operateValidFlag?=?false;
resultText.setText("零沒有倒數(shù)");
}?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("+/-"))?{
//?正數(shù)負數(shù)運算
resultNum?=?resultNum?*?(-1);
}?else?if?(operator.equals("="))?{
//?賦值運算
resultNum?=?getNumberFromText();
}
if?(operateValidFlag)?{
//?雙精度浮點數(shù)的運算
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;
operateValidFlag?=?true;
}
/**
?*?從結(jié)果文本框中獲取數(shù)字
?*?
?*?@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[])?{
JCalculator?JCalculator1?=?new?JCalculator();
JCalculator1.setVisible(true);
JCalculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
JAVA 計算器程序
Cadev.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.LinkedList;
import java.text.NumberFormat;
import javax.swing.border.*;
public class Cadev extends JFrame implements ActionListener
{
Nbtn nbtn[];
Obtn obtn[];
Button dotbtn,PlusOrMinusbtn,Backspacebtn,
recbtn,equbtn,clbtn;
JPanel panel;
JTextField resultShow;
String Oper[]={"+","-","*","/"};
LinkedList link;
boolean sfcequ=false;
public Cadev()
{
super("計算器");
link=new LinkedList();
nbtn=new Nbtn[10];
for(int i=0;i=9;i++)
{
nbtn[i]=new Nbtn(i);
nbtn[i].addActionListener(this);
}
obtn=new Obtn[4];
for(int i=0;i4;i++)
{
obtn[i]=new Obtn(Oper[i]);
obtn[i].addActionListener(this);
}
dotbtn=new Button(".");
PlusOrMinusbtn=new Button("+/-");
equbtn=new Button("=");
recbtn=new Button("1/x");
Backspacebtn=new Button("退格");
clbtn=new Button("C");
recbtn.setForeground(Color.blue);
dotbtn.setForeground(Color.blue);
PlusOrMinusbtn.setForeground(Color.blue);
equbtn.setForeground(Color.red);
Backspacebtn.setForeground(Color.red);
clbtn.setForeground(Color.red);
dotbtn.addActionListener(this);
PlusOrMinusbtn.addActionListener(this);
equbtn.addActionListener(this);
recbtn.addActionListener(this);
Backspacebtn.addActionListener(this);
clbtn.addActionListener(this);
resultShow=new JTextField(10);
resultShow.setHorizontalAlignment(JTextField.RIGHT);
resultShow.setFont(new Font("TimesRoman",Font.PLAIN,14));
resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
resultShow.setBackground(Color.white);
resultShow.setEditable(false);
panel=new JPanel();
panel.setLayout(new GridLayout(4,5));
panel.add(nbtn[1]);
panel.add(nbtn[2]);
panel.add(nbtn[3]);
panel.add(obtn[0]);
panel.add(clbtn);
panel.add(nbtn[4]);
panel.add(nbtn[5]);
panel.add(nbtn[6]);
panel.add(obtn[1]);
panel.add(Backspacebtn);
panel.add(nbtn[7]);
panel.add(nbtn[8]);
panel.add(nbtn[9]);
panel.add(obtn[2]);
panel.add(recbtn);
panel.add(nbtn[0]);
panel.add(PlusOrMinusbtn);
panel.add(dotbtn);
panel.add(obtn[3]);
panel.add(equbtn);
add(panel,BorderLayout.CENTER);
add(resultShow,BorderLayout.NORTH);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
setVisible(true);
setBounds(100,50,240,180);
setResizable(false);
validate();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() instanceof Nbtn)
{
Nbtn b=(Nbtn)e.getSource();
if(link.size()==0)
{
int num=b.getNum();
link.add(""+num);
resultShow.setText(""+num);
sfcequ=false;
}
else if(link.size()==1sfcequ==false)
{
int num=b.getNum();
String Number=(String)link.getFirst();
String s=Number.concat(""+num);
link.set(0,s);
resultShow.setText(s);
}
else if(link.size()==1sfcequ==true)
{
int num=b.getNum();
link.removeFirst();
link.add(""+num);
sfcequ=false;
resultShow.setText(""+num);
}
else if(link.size()==2)
{
int num=b.getNum();
link.add(""+num);
resultShow.setText(""+num);
}
else if(link.size()==3)
{
int num=b.getNum();
String Number=(String)link.getLast();
String s=Number.concat(""+num);
link.set(2,s);
resultShow.setText(s);
}
}
else if(e.getSource() instanceof Obtn)
{
Obtn b=(Obtn)e.getSource();
if(link.size()==1)
{
String sign=b.getOper();
link.add(sign);
}
else if(link.size()==2)
{
String sign=b.getOper();
link.set(1,sign);
}
else if(link.size()==3)
{
String sign=b.getOper();
String num1=(String)link.getFirst();
String num2=(String)link.getLast();
String Oper=(String)link.get(1);
try
{
double n1=Double.parseDouble(num1);
double n2=Double.parseDouble(num2);
double n=0;
if(Oper.equals("+"))
{
n=n1+n2;
}
else if(Oper.equals("-"))
{
n=n1-n2;
}
else if(Oper.equals("*"))
{
n=n1*n2;
}
else if(Oper.equals("/"))
{
n=n1/n2;
}
link.clear();
link.add(""+n);
link.add(sign);
resultShow.setText(""+n);
}
catch(Exception ee)
{
}
}
}
else if(e.getSource()==equbtn)
{
sfcequ=true;
if(link.size()==1||link.size()==2)
{
String num=(String)link.getFirst();
resultShow.setText(""+num);
}
else if(link.size()==3)
{
String num1=(String)link.getFirst();
String num2=(String)link.getLast();
String sign=(String)link.get(1);
try
{
double n1=Double.parseDouble(num1);
double n2=Double.parseDouble(num2);
double n=0;
if(sign.equals("+"))
{
n=n1+n2;
}
else if(sign.equals("-"))
{
n=n1-n2;
}
else if(sign.equals("*"))
{
n=n1*n2;
}
else if(sign.equals("/"))
{
n=n1/n2;
}
resultShow.setText(""+n);
link.set(0,""+n);
link.removeLast();
link.removeLast();
}
catch(Exception ee)
{
}
}
}
else if(e.getSource()==dotbtn)
{
if(link.size()==0)
{
sfcequ=false;
}
else if(link.size()==1)
{
String dot=dotbtn.getLabel();
String num=(String)link.getFirst();
String s=null;
if(num.indexOf(dot)==-1)
{
s=num.concat(dot);
link.set(0,s);
}
else
{
s=num;
}
link.set(0,s);
resultShow.setText(s);
}
else if(link.size()==3)
{
String dot=dotbtn.getLabel();
String num=(String)link.getLast();
String s=null;
if(num.indexOf(dot)==-1)
{
s=num.concat(dot);
link.set(2,s);
}
else
{
s=num;
}
resultShow.setText(s);
}
}
else if(e.getSource()==Backspacebtn)
{
if(link.size()==1)
{
String num=(String)link.getFirst();
if(num.length()=1)
{
num=num.substring(0,num.length()-1);
link.set(0,num);
resultShow.setText(num);
}
else
{
link.removeLast();
resultShow.setText("0");
}
}
else if(link.size()==3)
{
String num=(String)link.getLast();
if(num.length()=1)
{
num=num.substring(0,num.length()-1);
link.set(0,num);
resultShow.setText(num);
}
else
{
link.removeLast();
resultShow.setText("0");
}
}
}
else if(e.getSource()==PlusOrMinusbtn)
{
if(link.size()==1)
{
String num1=(String)link.getFirst();
try
{
double d=Double.parseDouble(num1);
d=-1*d;
String str=String.valueOf(d);
link.set(0,str);
resultShow.setText(str);
}
catch(Exception ee)
{
}
}
else if(link.size()==3)
{
String num2=(String)link.getLast();
try
{
double d=Double.parseDouble(num2);
d=-1*d;
String str=String.valueOf(d);
link.set(2,str);
resultShow.setText(str);
}
catch(Exception ee)
{
}
}
}
else if(e.getSource()==recbtn)
{
if(link.size()==1||link.size()==2)
{
String num1=(String)link.getFirst();
try
{
double d=Double.parseDouble(num1);
d=1.0/d;
String str=String.valueOf(d);
link.set(0,str);
resultShow.setText(str);
}
catch(Exception ee)
{
}
}
else if(link.size()==3)
{
String num2=(String)link.getLast();
try
{
double d=Double.parseDouble(num2);
d=1.0/d;
String str=String.valueOf(d);
link.set(0,str);
}
catch(Exception ee)
{
}
}
}
else if(e.getSource()==clbtn)
{
sfcequ=false;
resultShow.setText("0");
link.clear();
}
}
public static void main(String agrs[])
{
new Cadev();
}
}
Nbtn.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Nbtn extends Button
{
int Num;
public Nbtn(int n)
{
super(""+n);
Num=n;
setForeground(Color.blue);
}
public int getNum()
{
return Num;
}
}
Obtn.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Obtn extends Button
{
String Oper;
public Obtn(String s)
{
super(s);
Oper=s;
setForeground(Color.red);
}
public String getOper()
{
return Oper;
}
}