您的当前位置:首页java简易计算器

java简易计算器

2023-12-23 来源:小侦探旅游网
版权所有 翻版必究 路曜逢 package Applet;

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 mystack=new Stack(); while(formula.charAt(i)!='=') {

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 mystack1 =new Stack(); while(ic=anArray[i]; switch(c) {

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()); } }

因篇幅问题不能全部显示,请点此查看更多更全内容