當前位置:編程學習大全網 - 編程語言 - 編寫java application程序實現壹個簡易計算器

編寫java application程序實現壹個簡易計算器

Java計算器?源代碼:

import?java.awt.*;

import?java.awt.event.*;

import?javax.swing.*;

/**********************Java計算器?主類*********************/

public?class?SunnyCalculator?implements?ActionListener?{

JFrame?f;

JMenu?mEdit;

JMenu?mView;

JMenu?mHelp;

JMenuItem?mCopy;

JMenuItem?mPaste;

JTextField?tResult;

JButton?bNumber;

JButton?bOperator;

JButton?bOther;

JButton?bM;

boolean?isDouble=false;//是否為實數

int?opFlag=-1;

static?double?t1=0,t2=0,t3=0,result=0;

static?int?opflag1=-1,opflag2=-1,flag=0,resflag=1;

int?preOp,currentOp=0;//標準位

double?op1=0,op2=0;//操作數

double?n3;

StringBuffer?buf=new?StringBuffer(20);

StringBuffer?copyBoard=new?StringBuffer(20);//剪貼板

StringBuffer?memory=new?StringBuffer(20);//M系列

StringBuffer?str=new?StringBuffer();

//Java計算器?構造器

public?SunnyCalculator()

{

f?=?new?JFrame("Sunny計算器_楊梅樹的盔甲");

Container?contentPane?=?f.getContentPane();

/**************************Java計算器?菜單的創建*****************************/

JMenuBar?mBar?=?new?JMenuBar();

mBar.setOpaque(true);

mEdit?=?new?JMenu("編輯(E)");

mEdit.setMnemonic(KeyEvent.VK_E);

mCopy?=?new?JMenuItem("復制(C)");

mEdit.add(mCopy);

mPaste?=?new?JMenuItem("粘貼(P)");

mEdit.add(mPaste);

mView?=?new?JMenu("查看(V)");

mView.setMnemonic(KeyEvent.VK_V);

mView.add(new?JMenuItem("標準型"));

mView.add(new?JMenuItem("科學型"));

mView.addSeparator();

mView.add(new?JMenuItem("查看分組"));

mHelp?=?new?JMenu("幫助(H)");

mHelp.setMnemonic(KeyEvent.VK_H);

mHelp.add(new?JMenuItem("幫助主題"));

mHelp.addSeparator();

mHelp.add(new?JMenuItem("關於計算器"));

mBar.add(mEdit);

mBar.add(mView);

mBar.add(mHelp);

f.setJMenuBar(mBar);

contentPane.setLayout(new?BorderLayout());

JPanel?pTop?=?new?JPanel();

tResult?=?new?JTextField("0.",26);

tResult.setHorizontalAlignment(JTextField.RIGHT);

tResult.setEditable(false);

pTop.add(tResult);

contentPane.add(pTop,BorderLayout.NORTH);

JPanel?pBottom?=?new?JPanel();

pBottom.setLayout(new?BorderLayout());

JPanel?pLeft?=?new?JPanel();

pLeft.setLayout(new?GridLayout(5,1,3,3));

bM?=?new?JButton("?");

bM.setEnabled(false);

pLeft.add(bM);

/*************************Java計算器?功能鍵定義***************************/

bOther?=?new?JButton("MC");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new?Insets(3,2,3,2));

pLeft.add(bOther);

bOther?=?new?JButton("MR");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new?Insets(3,2,3,2));

pLeft.add(bOther);

bOther?=?new?JButton("MS");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new?Insets(3,2,3,2));

pLeft.add(bOther);

bOther?=?new?JButton("M+");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new?Insets(3,2,3,2));

pLeft.add(bOther);

pBottom.add(pLeft,BorderLayout.WEST);

JPanel?pRight?=?new?JPanel();

pRight.setLayout(new?BorderLayout());

JPanel?pUp?=?new?JPanel();

pUp.setLayout(new?GridLayout(1,3,3,0));

bOther?=?new?JButton("BackSpace");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

bOther.setMargin(new?Insets(3,0,3,5));

pUp.add(bOther);

bOther?=?new?JButton("CE");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

pUp.add(bOther);

bOther?=?new?JButton("C");

bOther.addActionListener(this);

bOther.setForeground(Color.red);

pUp.add(bOther);

/***************************Java計算器?數字鍵盤區定義**************************/

JPanel?pDown?=?new?JPanel();

pDown.setLayout(new?GridLayout(4,5,3,2));

bNumber?=?new?JButton("7");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new?Insets(3,3,3,3));

pDown.add(bNumber);

bNumber?=?new?JButton("8");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new?Insets(3,3,3,3));

pDown.add(bNumber);

bNumber?=?new?JButton("9");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new?Insets(3,3,3,3));

pDown.add(bNumber);

bOperator?=?new?JButton("/");

bOperator.setForeground(Color.red);

bOperator.addActionListener(this);

bOperator.setMargin(new?Insets(3,0,3,0));

pDown.add(bOperator);

bOperator?=?new?JButton("sqrt");

bOperator.addActionListener(this);

bOperator.setForeground(Color.red);

bOperator.setMargin(new?Insets(3,0,3,0));

pDown.add(bOperator);

bNumber?=?new?JButton("4");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new?Insets(3,3,3,3));

bNumber.setHorizontalTextPosition(JButton.LEFT);

pDown.add(bNumber);

bNumber?=?new?JButton("5");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new?Insets(3,3,3,3));

pDown.add(bNumber);

bNumber?=?new?JButton("6");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new?Insets(3,3,3,3));

pDown.add(bNumber);

bOperator?=?new?JButton("*");

bOperator.setForeground(Color.red);

bOperator.addActionListener(this);

bOperator.setMargin(new?Insets(3,3,3,3));

pDown.add(bOperator);

bOperator?=?new?JButton("%");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new?Insets(3,3,3,3));

pDown.add(bOperator);

bNumber?=?new?JButton("1");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new?Insets(3,3,3,3));

pDown.add(bNumber);

bNumber?=?new?JButton("2");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new?Insets(3,3,3,3));

pDown.add(bNumber);

bNumber?=?new?JButton("3");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new?Insets(3,3,3,3));

pDown.add(bNumber);

bOperator?=?new?JButton("-");

bOperator.setForeground(Color.red);

bOperator.addActionListener(this);

bOperator.setMargin(new?Insets(3,3,3,3));

pDown.add(bOperator);

bOperator?=?new?JButton("1/x");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

pDown.add(bOperator);

bNumber?=?new?JButton("0");

bNumber.setForeground(Color.blue);

bNumber.addActionListener(this);

bNumber.setMargin(new?Insets(3,3,3,3));

pDown.add(bNumber);

bOperator?=?new?JButton("+/-");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new?Insets(3,3,3,3));

pDown.add(bOperator);

bOperator?=?new?JButton(".");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new?Insets(3,3,3,3));

pDown.add(bOperator);

bOperator?=?new?JButton("+");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new?Insets(3,3,3,3));

pDown.add(bOperator);

bOperator?=?new?JButton("=");

bOperator.setForeground(Color.blue);

bOperator.addActionListener(this);

bOperator.setMargin(new?Insets(3,3,3,3));

pDown.add(bOperator);

pRight.add(pUp,BorderLayout.NORTH);

pRight.add(pDown,BorderLayout.SOUTH);

pBottom.add(pRight,BorderLayout.EAST);

contentPane.add(pBottom,BorderLayout.SOUTH);

f.setSize(new?Dimension(320,256));

f.setResizable(false);

f.setVisible(true);

f.addWindowListener(new?WindowAdapter()

{

public?void?windowClosing(WindowEvent?e)

{

System.exit(0);

}

}

);

}

/************************Java計算器?計算方法區***************************/

public?void?actionPerformed(ActionEvent?e)

{

String?s?=?e.getActionCommand();

if(s.equals("復制(C)"))

{

String?temp?=?tResult.getText().trim();

copyBoard.replace(0,?copyBoard.length(),?temp);

mPaste.setEnabled(true);

}

else?if(s.equals("粘貼(p)"))

{

tResult.setText(copyBoard.toString());?

}

else?if(s.equals("CE"))

{

//如果是CE則清除文本框

tResult.setText("0.");

}

else?if(s.equals("BackSpace"))

{

if(!tResult.getText().trim().equals("0."))

{

//如果文本框中有內容

if(str.length()!=1?&&?str.length()!=0)

{

tResult.setText(str.delete(str.length()-1,str.length()).toString());

}

else

{

tResult.setText("0.");

str.setLength(0);

}

}

op2?=?Double.parseDouble(tResult.getText().trim());

}

else?if(s.equals("C"))

{

//如果是C刪除當前計算

tResult.setText("0.");

op1?=?op2?=?0;

str.replace(0,?str.length(),?"?");

preOp?=?currentOp?=?0;

}

else?if(s.equals("MC"))

{

//如果是MC則清除緩沖區

String?temp?=?"";

memory.replace(0,?memory.length(),?temp);

bM.setText("?");

}

else?if(s.equals("MR"))

{

//如果按鍵為MR則恢復緩沖區的數到文本框

tResult.setText(memory.toString());

}

else?if(s.equals("MS"))

{

//如果按鍵為MS則將文本框的數存入緩沖區

String?s1?=?tResult.getText().trim();

memory.replace(0,?memory.length(),?s1);

bM.setText("M");

}

else?if(s.equals("M+"))

{

//如果按鍵為MS則將文本框值與緩沖區的數相加但不顯示結果

String?temp1?=?tResult.getText().trim();

double?dtemp?=?Double.parseDouble(temp1);

String?temp2?=?memory.toString();

dtemp?+=?Double.parseDouble(temp2);

temp1?=?String.valueOf(dtemp);

memory.replace(0,?memory.length(),?temp1);

}

else?if(s.equals("1/x"))

{

//如果按鍵為1/x則將文本框中的數據為它的倒數

String?temp?=?tResult.getText().trim();

double?dtemp?=?Double.parseDouble(temp);

tResult.setText(""+1/dtemp);

}

else?if(s.equals("sqrt"))

{

//如果按鍵為sqrt則將文本框中的內容求平方根

String?temp?=?tResult.getText().trim();

double?dtemp?=?Double.parseDouble(temp);

tResult.setText(""+Math.sqrt(dtemp));

}

else?if(s.equals("+"))

{

str.setLength(0);

if(currentOp==0)

{

preOp?=?currentOp?=?1;

op2?=?0;

tResult.setText(""+op1);

}

else

{

currentOp?=?preOp;

preOp?=?1;

switch(currentOp){

case?1:

op1?+=?op2;

tResult.setText(""+op1);

break;

case?2:

op1?-=?op2;

tResult.setText(""+op1);

break;

case?3:

op1?*=?op2;

tResult.setText(""+op1);

break;

case?4:

op1?/=?op2;

tResult.setText(""+op1);

break;

}

}

}

else?if(s.equals("-")){?

str.setLength(0);?

if(currentOp==0)?

{?

preOp=currentOp=2;//op1=op2;op2=0;?

tResult.setText(""+op1);?

}?

else?

{?

currentOp?=preOp;?

preOp?=2;?

switch(currentOp){?

case?1:op1=op1+op2;tResult.setText(""+op1);break;?

case?2:op1=op1-op2;tResult.setText(""+op1);break;?

case?3:op1=op1*op2;tResult.setText(""+op1);break;?

case?4:op1=op1/op2;tResult.setText(""+op1);break;?

}?

}?

}?

else?if(s.equals("*"))//*?

{?

str.setLength(0);?

if(currentOp==0)?

{?

preOp=currentOp=3;//op1=op2;op2=1;?

tResult.setText(""+op1);//op1=op2;?

}?

else?

{?

currentOp?=preOp;?

preOp?=3;?

switch(currentOp){?

case?1:op1=op1+op2;tResult.setText(""+op1);break;?

case?2:op1=op1-op2;tResult.setText(""+op1);break;?

case?3:op1=op1*op2;tResult.setText(""+op1);break;?

case?4:op1=op1/op2;tResult.setText(""+op1);break;?

}?

}?

}?

else?if(s.equals("/"))//?/?

{?

str.setLength(0);?

if(currentOp==0)?

{?

preOp=currentOp=4;//op2=1;?

tResult.setText(""+op1);//op1=op2;?

}?

else?

{?

currentOp?=preOp;?

preOp?=4;?

switch(currentOp){?

case?1:op1=op1+op2;tResult.setText(""+op1);break;?

case?2:op1=op1-op2;tResult.setText(""+op1);break;?

case?3:op1=op1*op2;tResult.setText(""+op1);break;?

case?4:op1=op1/op2;tResult.setText(""+op1);break;?

}?

}?

}?

else?if(s.equals("="))//?=?

{?

if(currentOp==0)?

{?

str.setLength(0);?

tResult.setText(""+op2);?

}?

else?

{?

str.setLength(0);?

currentOp?=preOp;?

switch(currentOp){?

case?1:op1=op1+op2;tResult.setText(""+op1);break;?

case?2:op1=op1-op2;tResult.setText(""+op1);break;?

case?3:op1=op1*op2;tResult.setText("&qu

  • 上一篇:編程哨子
  • 下一篇:為什麽我們做個機器人也需要單片機啊
  • copyright 2024編程學習大全網