/*the
main calculate function*/ import
java.math.*; public
class calc { static
calc cal = null; double
result = 1 ; BigDecimal
num1 ; BigDecimal
num2; BigDecimal
value; /*
CONSTRUCTOR*/ private
calc(){ } /*SINGLETON
MODLE*/ public
static calc singleton(){ if(cal
== null){ cal
= new calc(); return
cal; }else{ return
cal; } } /*
THE ADD OPERTATION*/ public
String add(String a , String b){ num1
= new BigDecimal(a); num2
= new BigDecimal(b); value
= num1.add(num2); num1
= null; num2
= null; return
(value.toPlainString()); } /*
THE SUB OPERATION*/ public
String sub(String a , String b){ num1
= new BigDecimal(a); num2
= new BigDecimal(b); value
= num1.subtract(num2); num1
= null; num2
= null; return
(value.toPlainString()); } /*
THE MULTIPLY OPERATION*/ public
String multiply(String a , String b){ num1
= new BigDecimal(a); num2
= new BigDecimal(b); value
= num1.multiply(num2); num1
= null; num2
= null; return
(value.toPlainString()); } /*
THE DIV OPERATION*/ public
String div(String a , String b){ num1
= new BigDecimal(a); num2
= new BigDecimal(b); value
= num1.divide(num2,100,BigDecimal.ROUND_HALF_UP); num1
= null; num2
= null; return
(value.toPlainString()); } /*
THE ROOT OPERATION*/ public
String root(String a){ return
Math.sqrt(Double.parseDouble(a))+""; } /*
THE FACTORIAL OPERATION阶乘*/ public
double factorial(Double a){ for(int
i = 1 ; i<=a ; i++){ result
= result*i; } return
result; } /*
THE SQUARE OPERATION*/ public
String square(String d){ num1
= new BigDecimal(d); value
= num1.multiply(num1); num1
= null; return
(value.toPlainString()); } /*THE
CUBIC OPERATION*/ public
String cubic(String a){ num1
= new BigDecimal(a); value
= num1.multiply(num1); value
= value.multiply(num1); num1
= null; return
(value.toPlainString()); } /*
THE POWER OPERATION幂次*/ public
String power(String a , int e){ num1
= new BigDecimal(a); value
= num1.pow(e); num1
= null; return
value.toPlainString(); } /*THE
RECIPROCAL OPERATION倒数*/ public
String reciprocal(String a){ num1
= new BigDecimal("1.0"); num2
= new BigDecimal(a); value
= num1.divide(num2,100,BigDecimal.ROUND_HALF_UP); num1
= null; num2
= null; return
value.toPlainString(); } public
String mod(String a, String b){ num1
= new BigDecimal(a); num2
= new BigDecimal(b); value
= num1.remainder(num2); num1
= null; num2
= null; return
value.toPlainString(); } } /*
the main implements function*/ import
java.awt.*; import
java.awt.event.*; @SuppressWarnings("serial") public
class myframe extends Frame { TextField
text = null; /*THE
CONSTRUCTOR */ public
myframe(String topic , int x , int y , int height , int width){ super(topic); this.setVisible(true); this.addWindowListener(new
windowmonitor()); this.setBounds(x,y,height,width); this.setResizable(false); } /*THE
WINDOW MONITOR WHICH IS USED TO CLOSE THE WINDOW*/ class
windowmonitor extends WindowAdapter { public
void windowClosing(WindowEvent e){ setVisible(false); System.exit(0); } } /*THE
SINGLETON MODEL*/ static
myframe one = new myframe("calculator" , 200 , 200 , 400 , 350); public
static myframe getme(){ return
one; } public
static void main(String args[]){ /*it
is used to screen the number*/ Panel
panel1 = new Panel(); /*it
is used to contain the button */ Panel
panel2 = new Panel(); panel2.setLayout(new
BorderLayout()); panel1.setBounds(0,100,400,240); panel2.setBounds(200,200,400,125); panel1.setBackground(Color.GREEN); panel2.setBackground(Color.BLUE); panel1.setLayout(new
GridLayout(5,5,5,5)); one.add(panel1); one.add(panel2); myframe.getme().text
= new TextField(50); panel2.add(myframe.getme().text); myframe.getme().text.setBackground(Color.PINK); /*THE
BUTTONS , I THINK WE CAN USE ARRAY TO IMPLEMENTS THIS FUNCTION */ Button
button1 = new Button("1"); Button
button2 = new Button("2"); Button
button3 = new Button("3"); Button
button4 = new Button("4"); Button
button5 = new Button("5"); Button
button6 = new Button("6"); Button
button7 = new Button("7"); Button
button8 = new Button("8"); Button
button9 = new Button("9"); Button
button10 = new Button("0"); Button
button11 = new Button("+"); Button
button12= new Button("-"); Button
button13= new Button("*"); Button
button14= new Button("/"); Button
button15= new Button("cubic"); Button
button16= new Button("square"); Button
button17= new Button("root"); Button
button18= new Button("factorial"); Button
button19= new Button("reciprocal"); Button
button20= new Button("power"); Button
button21= new Button("."); Button
button22= new Button("="); Button
button23= new Button("clc"); Button
button24= new Button("mod"); /*
Button
button25= new Button(); Button
button26= new Button(); Button
button27= new Button(); Button
button28= new Button(); Button
button29= new Button(); Button
button30= new Button(); */ /*THE
ADD THE BUTTONS TO THE PANEL*/ panel1.add(button1); panel1.add(button2); panel1.add(button3); panel1.add(button4); panel1.add(button5); panel1.add(button6); panel1.add(button7); panel1.add(button8); panel1.add(button9); panel1.add(button10); panel1.add(button11); panel1.add(button12); panel1.add(button13); panel1.add(button14); panel1.add(button15); panel1.add(button16); panel1.add(button17); panel1.add(button18); panel1.add(button19); panel1.add(button20); panel1.add(button21); panel1.add(button22); panel1.add(button23); panel1.add(button24); /* panel1.add(button25); panel1.add(button26); panel1.add(button27); panel1.add(button28); panel1.add(button29); panel1.add(button30); */ /*ADD
MONITOR TO THE BUTTON*/ monitor
mymonitor = new monitor(); button1.addActionListener(mymonitor); button2.addActionListener(mymonitor); button3.addActionListener(mymonitor); button4.addActionListener(mymonitor); button5.addActionListener(mymonitor); button6.addActionListener(mymonitor); button7.addActionListener(mymonitor); button8.addActionListener(mymonitor); button9.addActionListener(mymonitor); button10.addActionListener(mymonitor); button11.addActionListener(mymonitor); button12.addActionListener(mymonitor); button13.addActionListener(mymonitor); button14.addActionListener(mymonitor); button15.addActionListener(mymonitor); button16.addActionListener(mymonitor); button17.addActionListener(mymonitor); button18.addActionListener(mymonitor); button19.addActionListener(mymonitor); button20.addActionListener(mymonitor); button21.addActionListener(mymonitor); button22.addActionListener(mymonitor); button23.addActionListener(mymonitor); button24.addActionListener(mymonitor); } } /*THE
MONITOR WHICH IS USED TO IMPLEMENT THE FUNCTION OF A CALCULATOR*/ class
monitor implements ActionListener{ String
command = null; String
str1 = null; String
str2 = null; TextField
text1 =null; String
backvalue = null; /*THE
FLAG WHICH IS USED TO DISTINGUISH THE FUNCTION*/ int
flag = -1; @Override public
void actionPerformed(ActionEvent e) { /*GET
THE INFORMATION OF THE TEXT*/ text1
= myframe.getme().text; str1
= text1.getText(); /*RETURN
THE COMMAND OF THE BUTTON*/ command
= e.getActionCommand(); /*TO
SCREEN THE NUMBER */ if(command.equals("0")||command.equals("1")||command.equals("2")||command.equals("3") ||command.equals("4")||command.equals("5")||command.equals("6")||command.equals("7") ||command.equals("8")||command.equals("9")||command.equals(".")){ text1.setText(str1+command); /*PLUS
FUNCTION*/ }else
if(command.equals("+")){ backvalue
= str1; text1.setText(""); flag
= 0; /*THE
MINUS FUNCTION*/ }else
if(command.equals("-")){ backvalue
= str1; text1.setText(""); flag
= 1; /*THE
MUTIPLY FUNCTION*/ }else
if(command.equals("*")){ backvalue
= str1; text1.setText(""); flag
= 2; /*THE
DEVIDE FUNCTION*/ }else
if(command.equals("/")){ backvalue
= str1; text1.setText(""); flag
= 3; /*THE
CUBIC FUNCTION*/ }else
if(command.equals("cubic")){ backvalue
= str1; text1.setText(""); flag
= 4; /*THE
SQUARE FUNCTION*/ }else
if(command.equals("square")){ backvalue
= str1; text1.setText(""); flag
= 5; /*THE
ROOT FUNCTION*/ }else
if(command.equals("root")){ backvalue
= str1; text1.setText(""); flag
= 6; /*THE
FACTORIAL FUNCTION*/ }else
if(command.equals("factorial")){ backvalue
= str1; text1.setText(""); flag
= 7; /*THE
RECIPROCAL FUNCTION*/ }else
if(command.equals("reciprocal")){ backvalue
= str1; text1.setText(""); flag
= 8; /*THE
POWER FUNCTION*/ }else
if(command.equals("power")){ backvalue
= str1; text1.setText(""); flag
= 9; /*TO
DELETE THE CHAR WHICH IS SHOWED IN THE TEXT*/ }else
if(command.equals("mod")){ text1.setText(""); text1.setText(""); flag
= 10; }else
if(command.equals("clc")){ text1.setText(""); backvalue
= ""; flag
= -1; /*IMPLEMENTS
THE FUNCTION*/ } else
if (command.equals( "=" )){ switch (flag){ case
0 :
str1 = text1.getText(); backvalue
= calc.singleton().add(backvalue, str1); flag
=- 1 ; break ; case
1 :str1
= text1.getText(); backvalue
= calc.singleton().sub(backvalue, str1); flag
=- 1 ; break ; case
2 :str1
= text1.getText(); backvalue
= calc.singleton().multiply(backvalue, str1); flag
=- 1 ; break ; case
3 :str1
= text1.getText(); backvalue
= calc.singleton().div(backvalue, str1); flag
=- 1 ; break ; case
4 :str1
= text1.getText(); backvalue
= calc.singleton().cubic(backvalue); flag
=- 1 ; break ; case
5 :str1
= text1.getText(); backvalue
= calc.singleton().square(backvalue); flag
=- 1 ; break ; case
6 :str1
= text1.getText(); backvalue
= calc.singleton().root(backvalue); flag
=- 1 ; break ; case
7 :str1
= text1.getText(); backvalue
= "" +calc.singleton().factorial(Double.parseDouble(backvalue)); flag
=- 1 ; break ; case
8 :str1
= text1.getText(); backvalue
= calc.singleton().reciprocal(backvalue); flag
=- 1 ; break ; case
9 :str1
= text1.getText(); backvalue
= calc.singleton().power(backvalue, Integer.parseInt(str1)); flag
=- 1 ; break ; case
10 :str1
= text1.getText(); backvalue
= calc.singleton().mod(backvalue,str1); flag
=- 1 ; break ; } text1.setText( "" +backvalue); } } } |
百位计算器设计
最新推荐文章于 2024-03-07 19:38:22 发布