新聞中心
求一個(gè)JAVA計(jì)算器源代碼。不要按鈕的那種。速度。。急用
import java.awt.*;
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、元寶網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為元寶等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class Counter extends Frame
{
//聲明三個(gè)面板的布局
GridLayout gl1,gl2,gl3;
Panel p0,p1,p2,p3;
JTextField tf1;
TextField tf2;
Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;
StringBuffer str;//顯示屏所顯示的字符串
double x,y;//x和y都是運(yùn)算數(shù)
int z;//Z表示單擊了那一個(gè)運(yùn)算符.0表示"+",1表示"-",2表示"*",3表示"/"
static double m;//記憶的數(shù)字
public Counter()
{
gl1=new GridLayout(1,4,10,0);//實(shí)例化三個(gè)面板的布局
gl2=new GridLayout(4,1,0,15);
gl3=new GridLayout(4,5,10,15);
tf1=new JTextField(27);//顯示屏
tf1.setHorizontalAlignment(JTextField.RIGHT);
tf1.setEnabled(false);
tf1.setText("0");
tf2=new TextField(10);//顯示記憶的索引值
tf2.setEditable(false);
//實(shí)例化所有按鈕、設(shè)置其前景色并注冊(cè)監(jiān)聽器
b0=new Button("Backspace");
b0.setForeground(Color.red);
b0.addActionListener(new Bt());
b1=new Button("CE");
b1.setForeground(Color.red);
b1.addActionListener(new Bt());
b2=new Button("C");
b2.setForeground(Color.red);
b2.addActionListener(new Bt());
b3=new Button("MC");
b3.setForeground(Color.red);
b3.addActionListener(new Bt());
b4=new Button("MR");
b4.setForeground(Color.red);
b4.addActionListener(new Bt());
b5=new Button("MS");
b5.setForeground(Color.red);
b5.addActionListener(new Bt());
b6=new Button("M+");
b6.setForeground(Color.red);
b6.addActionListener(new Bt());
b7=new Button("7");
b7.setForeground(Color.blue);
b7.addActionListener(new Bt());
b8=new Button("8");
b8.setForeground(Color.blue);
b8.addActionListener(new Bt());
b9=new Button("9");
b9.setForeground(Color.blue);
b9.addActionListener(new Bt());
b10=new Button("/");
b10.setForeground(Color.red);
b10.addActionListener(new Bt());
b11=new Button("sqrt");
b11.setForeground(Color.blue);
b11.addActionListener(new Bt());
b12=new Button("4");
b12.setForeground(Color.blue);
b12.addActionListener(new Bt());
b13=new Button("5");
b13.setForeground(Color.blue);
b13.addActionListener(new Bt());
b14=new Button("6");
b14.setForeground(Color.blue);
b14.addActionListener(new Bt());
b15=new Button("*");
b15.setForeground(Color.red);
b15.addActionListener(new Bt());
b16=new Button("%");
b16.setForeground(Color.blue);
b16.addActionListener(new Bt());
b17=new Button("1");
b17.setForeground(Color.blue);
b17.addActionListener(new Bt());
b18=new Button("2");
b18.setForeground(Color.blue);
b18.addActionListener(new Bt());
b19=new Button("3");
b19.setForeground(Color.blue);
b19.addActionListener(new Bt());
b20=new Button("-");
b20.setForeground(Color.red);
b20.addActionListener(new Bt());
b21=new Button("1/X");
b21.setForeground(Color.blue);
b21.addActionListener(new Bt());
b22=new Button("0");
b22.setForeground(Color.blue);
b22.addActionListener(new Bt());
b23=new Button("+/-");
b23.setForeground(Color.blue);
b23.addActionListener(new Bt());
b24=new Button(".");
b24.setForeground(Color.blue);
b24.addActionListener(new Bt());
b25=new Button("+");
b25.setForeground(Color.red);
b25.addActionListener(new Bt());
b26=new Button("=");
b26.setForeground(Color.red);
b26.addActionListener(new Bt());
//實(shí)例化四個(gè)面板
p0=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
//創(chuàng)建一個(gè)空字符串緩沖區(qū)
str=new StringBuffer();
//添加面板p0中的組件和設(shè)置其在框架中的位置和大小
p0.add(tf1);
p0.setBounds(10,25,300,40);
//添加面板p1中的組件和設(shè)置其在框架中的位置和大小
p1.setLayout(gl1);
p1.add(tf2);
p1.add(b0);
p1.add(b1);
p1.add(b2);
p1.setBounds(10,65,300,25);
//添加面板p2中的組件并設(shè)置其的框架中的位置和大小
p2.setLayout(gl2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.setBounds(10,110,40,150);
//添加面板p3中的組件并設(shè)置其在框架中的位置和大小
p3.setLayout(gl3);//設(shè)置p3的布局
p3.add(b7);
p3.add(b8);
p3.add(b9);
p3.add(b10);
p3.add(b11);
p3.add(b12);
p3.add(b13);
p3.add(b14);
p3.add(b15);
p3.add(b16);
p3.add(b17);
p3.add(b18);
p3.add(b19);
p3.add(b20);
p3.add(b21);
p3.add(b22);
p3.add(b23);
p3.add(b24);
p3.add(b25);
p3.add(b26);
p3.setBounds(60,110,250,150);
//設(shè)置框架中的布局為空布局并添加4個(gè)面板
setLayout(null);
add(p0);
add(p1);
add(p2);
add(p3);
setResizable(false);//禁止調(diào)整框架的大小
//匿名類關(guān)閉窗口
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e1)
{
System.exit(0);
}
});
setBackground(Color.lightGray);
setBounds(100,100,320,280);
setVisible(true);
}
//構(gòu)造監(jiān)聽器
class Bt implements ActionListener
{
public void actionPerformed(ActionEvent e2)
{
try{
if(e2.getSource()==b1)//選擇"CE"清零
{
tf1.setText("0");//把顯示屏清零
str.setLength(0);//清空字符串緩沖區(qū)以準(zhǔn)備接收新的輸入運(yùn)算數(shù)
}
else if(e2.getSource()==b2)//選擇"C"清零
{
tf1.setText("0");//把顯示屏清零
str.setLength(0);
}
else if(e2.getSource()==b23)//單擊"+/-"選擇輸入的運(yùn)算數(shù)是正數(shù)還是負(fù)數(shù)
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(-x));
}
else if(e2.getSource()==b25)//單擊加號(hào)按鈕獲得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);//清空緩沖區(qū)以便接收新的另一個(gè)運(yùn)算數(shù)
y=0d;
z=0;
}
else if(e2.getSource()==b20)//單擊減號(hào)按鈕獲得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=1;
}
else if(e2.getSource()==b15)//單擊乘號(hào)按鈕獲得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=2;
}
else if(e2.getSource()==b10)//單擊除號(hào)按鈕獲得x的值和z的值并空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=3;
}
else if(e2.getSource()==b26)//單擊等號(hào)按鈕輸出計(jì)算結(jié)果
{
str.setLength(0);
switch(z)
{
case 0 : tf1.setText(""+(x+y));break;
case 1 : tf1.setText(""+(x-y));break;
case 2 : tf1.setText(""+(x*y));break;
case 3 : tf1.setText(""+(x/y));break;
}
}
else if(e2.getSource()==b24)//單擊"."按鈕輸入小數(shù)
{
if(tf1.getText().trim().indexOf(′.′)!=-1)//判斷字符串中是否已經(jīng)包含了小數(shù)點(diǎn)
{
}
else//如果沒數(shù)點(diǎn)有小
{
if(tf1.getText().trim().equals("0"))//如果初時(shí)顯示為0
{
str.setLength(0);
tf1.setText((str.append("0"+e2.getActionCommand())).toString());
}
else if(tf1.getText().trim().equals(""))//如果初時(shí)顯示為空則不做任何操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
}
}
y=0d;
}
else if(e2.getSource()==b11)//求平方根
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText("數(shù)字格式異常");
if(x0)
tf1.setText("負(fù)數(shù)沒有平方根");
else
tf1.setText(""+Math.sqrt(x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b16)//單擊了"%"按鈕
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(0.01*x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b21)//單擊了"1/X"按鈕
{
x=Double.parseDouble(tf1.getText().trim());
if(x==0)
{
tf1.setText("除數(shù)不能為零");
}
else
{
tf1.setText(""+(1/x));
}
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b3)//MC為清除內(nèi)存
{
m=0d;
tf2.setText("");
str.setLength(0);
}
else if(e2.getSource()==b4)//MR為重新調(diào)用存儲(chǔ)的數(shù)據(jù)
{
if(tf2.getText().trim()!="")//有記憶數(shù)字
{
tf1.setText(""+m);
}
}
else if(e2.getSource()==b5)//MS為存儲(chǔ)顯示的數(shù)據(jù)
{
m=Double.parseDouble(tf1.getText().trim());
tf2.setText("M");
tf1.setText("0");
str.setLength(0);
}
else if(e2.getSource()==b6)//M+為將顯示的數(shù)字與已經(jīng)存儲(chǔ)的數(shù)據(jù)相加要查看新的數(shù)字單擊MR
{
m=m+Double.parseDouble(tf1.getText().trim());
}
else//選擇的是其他的按鈕
{
if(e2.getSource()==b22)//如果選擇的是"0"這個(gè)數(shù)字鍵
{
if(tf1.getText().trim().equals("0"))//如果顯示屏顯示的為零不做操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
else if(e2.getSource()==b0)//選擇的是“BackSpace”按鈕
{
if(!tf1.getText().trim().equals("0"))//如果顯示屏顯示的不是零
{
if(str.length()!=1)
{
tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能拋出字符串越界異常
}
else
{
tf1.setText("0");
str.setLength(0);
}
}
y=Double.parseDouble(tf1.getText().trim());
}
else//其他的數(shù)字鍵
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
}
catch(NumberFormatException e){
tf1.setText("數(shù)字格式異常");
}
catch(StringIndexOutOfBoundsException e){
tf1.setText("字符串索引越界");
}
}
}
public static void main(String args[])
{
new Counter();
}
}
求一份JAVA計(jì)算器源代碼,要有()+-*/和清除鍵及小數(shù)點(diǎn)的,不用科學(xué)計(jì)算器
import?java.awt.BorderLayout;
import?java.awt.Dimension;
import?java.awt.GridLayout;
import?java.awt.Toolkit;
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.SwingUtilities;
import?javax.swing.UIManager;
class?CalculatorPanel?extends?JPanel?{
private?JPanel?jp;?//?中間的面板
private?double?result;?//?計(jì)算結(jié)果
private?boolean?start;?//?用于判斷是否是首次輸入,true首次,false不是首次
private?boolean?flag;?//?用于判斷是否清空顯示區(qū)域的值,true需要,false不需要
private?String?lastCommand;?//?用于保存運(yùn)算符
JButton?display;?//?顯示區(qū)域
public?CalculatorPanel()?{
//?初始化各項(xiàng)值
result?=?0;
start?=?true;
flag?=?false;
lastCommand?=?"=";
//?設(shè)置CalculatorPanel這個(gè)面板的布局為框架布局
setLayout(new?BorderLayout());
//?這個(gè)按鈕用來顯示值的區(qū)域
display?=?new?JButton("0.0");
display.setEnabled(false);//?按鈕樣式設(shè)置為禁用樣式
//?用來初始化,清除用的
JButton?clear?=?new?JButton("clear");
clear.addActionListener(new?ActionListener()?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
//?作初始化的操作
result?=?0;
start?=?true;
flag?=?false;
lastCommand?=?"=";
display.setText("0.0");
}
});
jp?=?new?JPanel();
//?將此面板布局設(shè)置為網(wǎng)格布局,4行4列
jp.setLayout(new?GridLayout(4,?4));
//?實(shí)例化監(jiān)聽器對(duì)象
NumberAction?na?=?new?NumberAction();
CommandAction?ca?=?new?CommandAction();
makeButton("7",?na);
makeButton("8",?na);
makeButton("9",?na);
makeButton("/",?ca);
makeButton("4",?na);
makeButton("5",?na);
makeButton("6",?na);
makeButton("*",?ca);
makeButton("1",?na);
makeButton("2",?na);
makeButton("3",?na);
makeButton("-",?ca);
makeButton("0",?na);
makeButton(".",?na);
makeButton("+",?ca);
makeButton("=",?ca);
//?將面板,兩個(gè)按鍵加入到我的面板,實(shí)現(xiàn)計(jì)算器的界面
add(display,?BorderLayout.NORTH);
add(jp,?BorderLayout.CENTER);
add(clear,?BorderLayout.SOUTH);
}
private?void?makeButton(String?buttonName,?ActionListener?al)?{
JButton?jb?=?new?JButton(buttonName);
jp.add(jb);
jb.addActionListener(al);
}
//?數(shù)字監(jiān)聽器
private?class?NumberAction?implements?ActionListener?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
JButton?jb?=?(JButton)?e.getSource();?//?獲取事件源對(duì)象
String?input?=?jb.getText();?//?獲取事件源對(duì)象上的標(biāo)簽
if?(start)?{?//?首次輸入
//?一上就".",就什么也不做
if?(input.equals("."))?{
return;
}
//?如果是"0.0"的話,就清空
if?(display.getText().equals("0.0"))?{
display.setText("");
}
start?=?false;//?改變是否首次輸入的標(biāo)記值
}?else?{
//?判斷顯示區(qū)域的值里面是否已經(jīng)有".",如果有,輸入的又是".",就什么都不做
if?(display.getText().indexOf(".")?!=?-1)?{
if?(input.equals("."))?{
return;
}
}
//?判斷顯示區(qū)域的值里面只有"-",輸入的又是".",就什么都不做
if?(display.getText().equals("-"))?{
if?(input.equals("."))?{
return;
}
}
//?判斷顯示區(qū)域的值如果是"0",輸入的不是".",就什么也不做
if?(display.getText().equals("0"))?{
if?(!input.equals("."))?{
return;
}
}
}
//?如果我點(diǎn)擊了運(yùn)算符以后,再輸入數(shù)字的話,就要清空顯示區(qū)域的值
if?(flag)?{
display.setText("");
flag?=?false;//?還原初始值,不需要清空
}
display.setText(display.getText()?+?input);//?設(shè)置顯示區(qū)域的值
}
}
//?運(yùn)算符監(jiān)聽器
private?class?CommandAction?implements?ActionListener?{
@Override
public?void?actionPerformed(ActionEvent?e)?{
JButton?jb?=?(JButton)?e.getSource();?//?獲取事件源對(duì)象
String?inputCommand?=?jb.getText();?//?獲取事件源對(duì)象上的標(biāo)簽
if?(start)?{//?首次輸入
//?一上就是"-"
if?(inputCommand.equals("-"))?{
display.setText("-");//?顯示區(qū)域的內(nèi)容設(shè)置為"-"
start?=?false;//?改變首次輸入的標(biāo)記
}
}?else?{
if?(!flag)?{//?如果flag=false不需要清空顯示區(qū)的值,就調(diào)用方法計(jì)算
calculate(Double.parseDouble(display.getText()));//?保存顯示區(qū)域的值,并計(jì)算
}
//?保存你點(diǎn)擊的運(yùn)算符
lastCommand?=?inputCommand;
flag?=?true;//?因?yàn)槲疫@里已經(jīng)輸入過運(yùn)算符,
}
}
}
//?計(jì)算用的方法
private?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;
}
display.setText(""?+?result);
}
}
class?MyFrameUitl?{
public?static?void?init(JFrame?jFrame,?Dimension?frameSize,?String?title,
String?iconFileName,?boolean?resizable)?{
Toolkit?tk?=?Toolkit.getDefaultToolkit();?//?系統(tǒng)工具包,可以讀取系統(tǒng)信息
Dimension?screenSize?=?tk.getScreenSize();//?獲取屏幕大小
//?獲取寬高
int?screenWidth?=?screenSize.width;
int?screenHeight?=?screenSize.height;
//?找中心點(diǎn)
int?centerX?=?screenWidth?/?2;
int?centerY?=?screenHeight?/?2;
//?解析窗體大小
int?frameWidth?=?frameSize.width;
int?frameHeight?=?frameSize.height;
//?設(shè)置窗體位置
jFrame.setBounds(centerX?-?frameWidth?/?2,?centerY?-?frameHeight?/?2,
frameWidth,?frameHeight);
jFrame.setTitle(title);//?設(shè)置標(biāo)題
if?(iconFileName?!=?null)?{
jFrame.setIconImage(tk.getImage(iconFileName));//?設(shè)置圖標(biāo)
}
//?設(shè)置皮膚com.sun.java.swing.plaf.windows.WindowsLookAndFeel
/**/
try?{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(jFrame);
}?catch?(Exception?e1)?{
e1.printStackTrace();
}
jFrame.setResizable(resizable);//?設(shè)置窗體是否可以改變大小
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);?//?設(shè)置程序關(guān)閉動(dòng)作
jFrame.setVisible(true);//?顯示窗體
}
}
class?CalculatorFrame?extends?JFrame?{
public?CalculatorFrame()?{
add(new?CalculatorPanel());
MyFrameUitl.init(this,?new?Dimension(400,?300),?"簡(jiǎn)易計(jì)算器",?null,
false);
this.pack();//?讓組件按原始大小顯示,并且窗體的大小剛好能夠容納所有的組件
}
}
public?class?CalculatorTest?{
public?static?void?main(String[]?args)?{
new?CalculatorFrame();
}
}
運(yùn)行結(jié)果:
java計(jì)算器的源代碼
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class Counter extends Frame
{
//聲明三個(gè)面板的布局
GridLayout gl1,gl2,gl3;
Panel p0,p1,p2,p3;
JTextField tf1;
TextField tf2;
Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;
StringBuffer str;//顯示屏所顯示的字符串
double x,y;//x和y都是運(yùn)算數(shù)
int z;//Z表示單擊了那一個(gè)運(yùn)算符.0表示"+",1表示"-",2表示"*",3表示"/"
static double m;//記憶的數(shù)字
public Counter()
{
gl1=new GridLayout(1,4,10,0);//實(shí)例化三個(gè)面板的布局
gl2=new GridLayout(4,1,0,15);
gl3=new GridLayout(4,5,10,15);
tf1=new JTextField(27);//顯示屏
tf1.setHorizontalAlignment(JTextField.RIGHT);
tf1.setEnabled(false);
tf1.setText("0");
tf2=new TextField(10);//顯示記憶的索引值
tf2.setEditable(false);
//實(shí)例化所有按鈕、設(shè)置其前景色并注冊(cè)監(jiān)聽器
b0=new Button("Backspace");
b0.setForeground(Color.red);
b0.addActionListener(new Bt());
b1=new Button("CE");
b1.setForeground(Color.red);
b1.addActionListener(new Bt());
b2=new Button("C");
b2.setForeground(Color.red);
b2.addActionListener(new Bt());
b3=new Button("MC");
b3.setForeground(Color.red);
b3.addActionListener(new Bt());
b4=new Button("MR");
b4.setForeground(Color.red);
b4.addActionListener(new Bt());
b5=new Button("MS");
b5.setForeground(Color.red);
b5.addActionListener(new Bt());
b6=new Button("M+");
b6.setForeground(Color.red);
b6.addActionListener(new Bt());
b7=new Button("7");
b7.setForeground(Color.blue);
b7.addActionListener(new Bt());
b8=new Button("8");
b8.setForeground(Color.blue);
b8.addActionListener(new Bt());
b9=new Button("9");
b9.setForeground(Color.blue);
b9.addActionListener(new Bt());
b10=new Button("/");
b10.setForeground(Color.red);
b10.addActionListener(new Bt());
b11=new Button("sqrt");
b11.setForeground(Color.blue);
b11.addActionListener(new Bt());
b12=new Button("4");
b12.setForeground(Color.blue);
b12.addActionListener(new Bt());
b13=new Button("5");
b13.setForeground(Color.blue);
b13.addActionListener(new Bt());
b14=new Button("6");
b14.setForeground(Color.blue);
b14.addActionListener(new Bt());
b15=new Button("*");
b15.setForeground(Color.red);
b15.addActionListener(new Bt());
b16=new Button("%");
b16.setForeground(Color.blue);
b16.addActionListener(new Bt());
b17=new Button("1");
b17.setForeground(Color.blue);
b17.addActionListener(new Bt());
b18=new Button("2");
b18.setForeground(Color.blue);
b18.addActionListener(new Bt());
b19=new Button("3");
b19.setForeground(Color.blue);
b19.addActionListener(new Bt());
b20=new Button("-");
b20.setForeground(Color.red);
b20.addActionListener(new Bt());
b21=new Button("1/X");
b21.setForeground(Color.blue);
b21.addActionListener(new Bt());
b22=new Button("0");
b22.setForeground(Color.blue);
b22.addActionListener(new Bt());
b23=new Button("+/-");
b23.setForeground(Color.blue);
b23.addActionListener(new Bt());
b24=new Button(".");
b24.setForeground(Color.blue);
b24.addActionListener(new Bt());
b25=new Button("+");
b25.setForeground(Color.red);
b25.addActionListener(new Bt());
b26=new Button("=");
b26.setForeground(Color.red);
b26.addActionListener(new Bt());
//實(shí)例化四個(gè)面板
p0=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
//創(chuàng)建一個(gè)空字符串緩沖區(qū)
str=new StringBuffer();
//添加面板p0中的組件和設(shè)置其在框架中的位置和大小
p0.add(tf1);
p0.setBounds(10,25,300,40);
//添加面板p1中的組件和設(shè)置其在框架中的位置和大小
p1.setLayout(gl1);
p1.add(tf2);
p1.add(b0);
p1.add(b1);
p1.add(b2);
p1.setBounds(10,65,300,25);
//添加面板p2中的組件并設(shè)置其的框架中的位置和大小
p2.setLayout(gl2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.setBounds(10,110,40,150);
//添加面板p3中的組件并設(shè)置其在框架中的位置和大小
p3.setLayout(gl3);//設(shè)置p3的布局
p3.add(b7);
p3.add(b8);
p3.add(b9);
p3.add(b10);
p3.add(b11);
p3.add(b12);
p3.add(b13);
p3.add(b14);
p3.add(b15);
p3.add(b16);
p3.add(b17);
p3.add(b18);
p3.add(b19);
p3.add(b20);
p3.add(b21);
p3.add(b22);
p3.add(b23);
p3.add(b24);
p3.add(b25);
p3.add(b26);
p3.setBounds(60,110,250,150);
//設(shè)置框架中的布局為空布局并添加4個(gè)面板
setLayout(null);
add(p0);
add(p1);
add(p2);
add(p3);
setResizable(false);//禁止調(diào)整框架的大小
//匿名類關(guān)閉窗口
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e1)
{
System.exit(0);
}
});
setBackground(Color.lightGray);
setBounds(100,100,320,280);
setVisible(true);
}
//構(gòu)造監(jiān)聽器
class Bt implements ActionListener
{
public void actionPerformed(ActionEvent e2)
{
try{
if(e2.getSource()==b1)//選擇"CE"清零
{
tf1.setText("0");//把顯示屏清零
str.setLength(0);//清空字符串緩沖區(qū)以準(zhǔn)備接收新的輸入運(yùn)算數(shù)
}
else if(e2.getSource()==b2)//選擇"C"清零
{
tf1.setText("0");//把顯示屏清零
str.setLength(0);
}
else if(e2.getSource()==b23)//單擊"+/-"選擇輸入的運(yùn)算數(shù)是正數(shù)還是負(fù)數(shù)
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(-x));
}
else if(e2.getSource()==b25)//單擊加號(hào)按鈕獲得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);//清空緩沖區(qū)以便接收新的另一個(gè)運(yùn)算數(shù)
y=0d;
z=0;
}
else if(e2.getSource()==b20)//單擊減號(hào)按鈕獲得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=1;
}
else if(e2.getSource()==b15)//單擊乘號(hào)按鈕獲得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=2;
}
else if(e2.getSource()==b10)//單擊除號(hào)按鈕獲得x的值和z的值并空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=3;
}
else if(e2.getSource()==b26)//單擊等號(hào)按鈕輸出計(jì)算結(jié)果
{
str.setLength(0);
switch(z)
{
case 0 : tf1.setText(""+(x+y));break;
case 1 : tf1.setText(""+(x-y));break;
case 2 : tf1.setText(""+(x*y));break;
case 3 : tf1.setText(""+(x/y));break;
}
}
else if(e2.getSource()==b24)//單擊"."按鈕輸入小數(shù)
{
if(tf1.getText().trim().indexOf(′.′)!=-1)//判斷字符串中是否已經(jīng)包含了小數(shù)點(diǎn)
{
}
else//如果沒數(shù)點(diǎn)有小
{
if(tf1.getText().trim().equals("0"))//如果初時(shí)顯示為0
{
str.setLength(0);
tf1.setText((str.append("0"+e2.getActionCommand())).toString());
}
else if(tf1.getText().trim().equals(""))//如果初時(shí)顯示為空則不做任何操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
}
}
y=0d;
}
else if(e2.getSource()==b11)//求平方根
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText("數(shù)字格式異常");
if(x0)
tf1.setText("負(fù)數(shù)沒有平方根");
else
tf1.setText(""+Math.sqrt(x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b16)//單擊了"%"按鈕
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(0.01*x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b21)//單擊了"1/X"按鈕
{
x=Double.parseDouble(tf1.getText().trim());
if(x==0)
{
tf1.setText("除數(shù)不能為零");
}
else
{
tf1.setText(""+(1/x));
}
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b3)//MC為清除內(nèi)存
{
m=0d;
tf2.setText("");
str.setLength(0);
}
else if(e2.getSource()==b4)//MR為重新調(diào)用存儲(chǔ)的數(shù)據(jù)
{
if(tf2.getText().trim()!="")//有記憶數(shù)字
{
tf1.setText(""+m);
}
}
else if(e2.getSource()==b5)//MS為存儲(chǔ)顯示的數(shù)據(jù)
{
m=Double.parseDouble(tf1.getText().trim());
tf2.setText("M");
tf1.setText("0");
str.setLength(0);
}
else if(e2.getSource()==b6)//M+為將顯示的數(shù)字與已經(jīng)存儲(chǔ)的數(shù)據(jù)相加要查看新的數(shù)字單擊MR
{
m=m+Double.parseDouble(tf1.getText().trim());
}
else//選擇的是其他的按鈕
{
if(e2.getSource()==b22)//如果選擇的是"0"這個(gè)數(shù)字鍵
{
if(tf1.getText().trim().equals("0"))//如果顯示屏顯示的為零不做操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
else if(e2.getSource()==b0)//選擇的是“BackSpace”按鈕
{
if(!tf1.getText().trim().equals("0"))//如果顯示屏顯示的不是零
{
if(str.length()!=1)
{
tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能拋出字符串越界異常
}
else
{
tf1.setText("0");
str.setLength(0);
}
}
y=Double.parseDouble(tf1.getText().trim());
}
else//其他的數(shù)字鍵
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
}
catch(NumberFormatException e){
tf1.setText("數(shù)字格式異常");
}
catch(StringIndexOutOfBoundsException e){
tf1.setText("字符串索引越界");
}
}
}
public static void main(String args[])
{
new Counter();
Java計(jì)算器源代碼
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;public class CaculatorA {
private JFrame jf;
private JButton[] jbs;
private JTextField jtf;
private JButton clear;
private double num1,num2,jieguo;
private char c;
/**
* 構(gòu)造方法實(shí)例化屬性
*
*/
public CaculatorA(){
jf=new JFrame("我的計(jì)算器v1.0");
jtf=new JTextField(20);
clear=new JButton("clear");
jbs=new JButton[16];
String str="123+456-789*0./=";
for(int i=0; istr.length(); i++){
jbs[i]=new JButton(str.charAt(i)+"");
}
init();
addEventHandler();
// setFont();
// setColor();
showMe();
}
/**
本文標(biāo)題:安卓java計(jì)算器源代碼 java計(jì)算器算法
新聞來源:http://www.dlmjj.cn/article/ddddips.html