當前位置:編程學習大全網 - 編程語言 - 速求java編程:計算器能在科學型與標準型之間切換的源代碼

速求java編程:計算器能在科學型與標準型之間切換的源代碼

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

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

public class Calculator 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 Calculator()

{

f = new JFrame("計算器_劉亞會");

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(""+op1);break;

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

}

currentOp=0;

op2=0;

}

}

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

{

isDouble=true;

if(tResult.getText().trim().indexOf('.')!=-1);

else {

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

str.setLength(0);

tResult.setText((str.append("0"+s)).toString());

}

//else if(tResult.getText().trim().equals("")){}//如果初時顯示為空則不做任何操作

else {

tResult.setText((str.append(s)).toString());

}

}

}

else if(s.equals("0"))//如果選擇的是"0"這個數字鍵

{

if(tResult.getText().trim().equals("0.")){}

else{

tResult.setText(str.append(s).toString());

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

}

}

else{

tResult.setText(str.append(s).toString());

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

if(currentOp==0)

op1=op2;

}

}//end actionPerformed

public static void main(String[] args) {

new Calculator();

}

}

這個就是了,看看功能是否壹樣

  • 上一篇:求JAVA視頻播放器代碼
  • 下一篇:二進制怎麽計算?
  • copyright 2024編程學習大全網