import java.util.*; import java.awt.*;
import java.awt.event.*; import javax.swing.*;
public class Calculatore extends JApplet implements ActionListener { /** * */ private static final long serialVersionUID = 1L; boolean i=true;
private JButton num0=new JButton(\"0\");
private JButton num1=new JButton(\"1\"); private JButton num2=new JButton(\"2\"); private JButton num3=new JButton(\"3\"); private JButton num4=new JButton(\"4\"); private JButton num5=new JButton(\"5\"); private JButton num6=new JButton(\"6\"); private JButton num7=new JButton(\"7\"); private JButton num8=new JButton(\"8\"); private JButton num9=new JButton(\"9\"); private JButton zuok=new JButton(\"(\"); private JButton youk=new JButton(\")\"); private JButton dian=new JButton(\".\"); private JButton NULL=new JButton(\"N\"); private JButton plu=new JButton(\"+\"); private JButton min=new JButton(\"-\"); private JButton mul=new JButton(\"x\"); private JButton div=new JButton(\"/\"); private JButton equ=new JButton(\"=\");
private JButton cle=new JButton(\"C\");//清除 private JTextField space=new JTextField(30);
public void init() {
JPanel text=new JPanel();
text.setLayout(new FlowLayout()); text.add(space);
JPanel buttons=new JPanel();
buttons.setLayout(new GridLayout(5,4)); buttons.add(num9);
buttons.add(num8); buttons.add(num7); buttons.add(plu); buttons.add(num6); buttons.add(num5); buttons.add(num4);
buttons.add(min); buttons.add(num3); buttons.add(num2); buttons.add(num1);
buttons.add(mul); buttons.add(num0); buttons.add(cle); buttons.add(equ);
buttons.add(div); buttons.add(zuok); buttons.add(youk); buttons.add(dian); buttons.add(NULL); (num9).addActionListener(this); (num8).addActionListener(this); (num7).addActionListener(this); (num6).addActionListener(this); (num5).addActionListener(this); (num4).addActionListener(this); (num3).addActionListener(this); (num2).addActionListener(this); (num1).addActionListener(this); (num0).addActionListener(this); (plu).addActionListener(this); (min).addActionListener(this); (mul).addActionListener(this); (div).addActionListener(this); (equ).addActionListener(this); (cle).addActionListener(this);
(zuok).addActionListener(this); (youk).addActionListener(this); (dian).addActionListener(this); setLayout(new BorderLayout()); add(\"North\ add(\"South\ space.setText(\"0\"); }
public void actionPerformed(ActionEvent e) {
if(e.getSource()==num9) {
if(i==true) {
space.setText(\"9\"); i=false; }
else space.setText(space.getText()+'9'); }
if(e.getSource()==num8) {
if(i==true) {
space.setText(\"8\"); i=false; }
else space.setText(space.getText()+'8'); }
if(e.getSource()==num7) {
if(i==true) {
space.setText(\"7\"); i=false; }
else space.setText(space.getText()+'7'); }
if(e.getSource()==num6) {
if(i==true) {
space.setText(\"6\"); i=false; }
else space.setText(space.getText()+'6'); }
if(e.getSource()==num5) {
if(i==true) {
space.setText(\"5\");
i=false; }
else space.setText(space.getText()+'5'); }
if(e.getSource()==num4) {
if(i==true) {
space.setText(\"4\"); i=false; }
else space.setText(space.getText()+'4'); }
if(e.getSource()==num3) {
if(i==true) {
space.setText(\"3\"); i=false; }
else space.setText(space.getText()+'3'); }
if(e.getSource()==num2) {
if(i==true) {
space.setText(\"2\"); i=false; }
else space.setText(space.getText()+'2'); }
if(e.getSource()==num1) {
if(i==true) {
space.setText(\"1\"); i=false; }
else space.setText(space.getText()+'1'); }
if(e.getSource()==num0) {
if(i==true) {
space.setText(\"0\"); i=false; }
else space.setText(space.getText()+'0'); }
if(e.getSource()==zuok) {
if(i==true) {
space.setText(\"(\"); i=false; }
else space.setText(space.getText()+'(');
} if(e.getSource()==youk) {
if(i==false)
space.setText(space.getText()+')'); }
if(e.getSource()==dian) {
if(i==false)
space.setText(space.getText()+'.'); }
if(e.getSource()==plu) {
space.setText(space.getText()+'+'); i=false; } if(e.getSource()==min) {
space.setText(space.getText()+'-'); i=false; } if(e.getSource()==mul) {
space.setText(space.getText()+'*'); i=false; } if(e.getSource()==div) {
space.setText(space.getText()+'/'); i=false; } if(e.getSource()==equ)
{
space.setText(String.valueOf(Calculator(space.getText()))); i=true; }
if(e.getSource()==cle) {
space.setText(\"0\"); i=true; } }
public double Calculator(String f)//科学计算 {
int i=0,j=0,k; char c;
StringBuffer s=new StringBuffer(); s.append(f); s.append('=');
String formula=s.toString(); char[] anArray;
anArray=new char[50];
Stack c=formula.charAt(i); switch(c) { case '(': mystack.push(new Character(c)); i++; break; case ')': while(mystack.peek().charValue()!='(') { anArray[j++]=mystack.pop().charValue(); } mystack.pop(); i++; break; case '+': case '-': while(!mystack.empty()&&mystack.peek().charValue()!='(') { anArray[j++]=mystack.pop().charValue(); } mystack.push(new Character(c)); i++; break; case '*': case '/': while(!mystack.empty()&&(mystack.peek().charValue()=='*'||mystack.peek().charValue()=='/')) { anArray[j++]=mystack.pop().charValue(); } mystack.push(new Character(c)); i++; break; case' ': i++; break; default: while((c>='0'&&c<='9')||c=='.') { anArray[j++]=c; i++; c=formula.charAt(i); } anArray[j++]='#'; break; } } while(!(mystack.empty())) anArray[j++]=mystack.pop().charValue(); i=0; int count; double a,b,d; Stack case '+': a=mystack1.pop().doubleValue(); b=mystack1.pop().doubleValue(); d=b+a; mystack1.push(new Double(d)); i++; break; case '-': a=mystack1.pop().doubleValue(); b=mystack1.pop().doubleValue(); d=b-a; mystack1.push(new Double(d)); i++; break; case '*': a=mystack1.pop().doubleValue(); b=mystack1.pop().doubleValue(); d=b*a; mystack1.push(new Double(d)); i++; break; case '/': a=mystack1.pop().doubleValue(); b=mystack1.pop().doubleValue(); if(a!=0) { d=b/a; mystack1.push(new Double(d)); i++; } else { System.out.println(\"Error!\"); } break; default: d=0;count=0; while((c>='0'&&c<='9')) { d=10*d+c-'0'; i++; c=anArray[i]; } if(c=='.') { i++; c=anArray[i]; while((c>='0'&&c<='9')) { count++; d=d+(c-'0')/Math.pow(10,count); i++; c=anArray[i]; } } if(c=='#') mystack1.push(new Double(d)); i++; break; } } return(mystack1.peek().doubleValue()); } } 因篇幅问题不能全部显示,请点此查看更多更全内容