求JAVA编的简易计算器,急急急

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求JAVA编的简易计算器,急急急相关的知识,希望对你有一定的参考价值。

要求:1、必须通过测试,千万别从别处随便抄一段代码给我,那些我都试过。2、将编译好的程序和源代码同时发到我邮箱中。renfei_emls@163.com注意是编译好了的。我把所有的财富全放上了哈。摆脱各位高手了,在线等。
简单的加减乘除开平方运算。就可以了

//发到你邮箱了,我是用QQ邮箱发的,815611030的那个。以下是我的源代码
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class Stack

String s[]=new String[100];
int n=0;
public void InQuece(String str)

s[n]=str;
n++;

public String DeQuece()

return s[--n];

public String Front()

return s[n-1];

public void Sprint()

for(int i=n-1;i>=0;i--)
System.out.print(s[i]+" ");
System.out.println();


public class Calculator

static Frame frm=new Frame("Calculator");
//static TextField tff=new TextField(20);
static Label lab=new Label("0.");
static Panel pan=new Panel();
static String labelstr="";
static String ltemp="";
static int flag=1;
static Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19;
public void setFrame()

frm.setBounds(300,150,400,350);
frm.setLayout(null);
frm.addWindowListener(new window());
frm.setVisible(true);
b0=new Button("0");b1=new Button("1");b2=new Button("2");b3=new Button("3");b4=new Button("4");b5=new Button("5");b6=new Button("6");
b7=new Button("7");b8=new Button("8");b9=new Button("9");
b10=new Button("+");b11=new Button("-");b12=new Button("*");b13=new Button("/");b14=new Button("AC");b15=new Button("C");b16=new Button("=");
b17=new Button("(");b18=new Button(")");b19=new Button("RE");
lab.setBounds(0, 30, 400, 40);
lab.setFont(new Font("宋体",Font.PLAIN,30));
lab.setAlignment(Label.RIGHT);
pan.setBounds(0,60, 400, 300);
pan.setLayout(new GridLayout(5,4));
b0.addActionListener(new action());b1.addActionListener(new action());b2.addActionListener(new action());b3.addActionListener(new action());b4.addActionListener(new action());
b5.addActionListener(new action());b6.addActionListener(new action());b7.addActionListener(new action());b8.addActionListener(new action());b9.addActionListener(new action());
b10.addActionListener(new action());b11.addActionListener(new action());b12.addActionListener(new action());b13.addActionListener(new action());b14.addActionListener(new action());
b15.addActionListener(new action());b16.addActionListener(new action());b17.addActionListener(new action());b18.addActionListener(new action());b19.addActionListener(new action());
pan.add(b1);pan.add(b2);pan.add(b3);pan.add(b10);pan.add(b4);pan.add(b5);pan.add(b6);pan.add(b11);pan.add(b7);pan.add(b8);pan.add(b9);pan.add(b12);
pan.add(b0);pan.add(b14);pan.add(b15);pan.add(b13);pan.add(b16);pan.add(b17);pan.add(b18);pan.add(b19);
frm.add(lab);
frm.add(pan);

public double cal(String str)

str=str.trim();
StringTokenizer st=new StringTokenizer(str,"+-*/ ",true);
Stack sta=new Stack();
String s,s1,s2;
while(st.hasMoreTokens())

s=st.nextToken();
if(s.equals("#"))
break;
if(s.equals(" "))
continue;
if(!(s.equals("+")||s.equals("-")||s.equals("/")||s.equals("*")))

sta.InQuece(s);

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

s2=sta.DeQuece();
s1=sta.DeQuece();
Double d1=Double.parseDouble(s1);
Double d2=Double.parseDouble(s2);
d1=d1+d2;
sta.InQuece(""+d1);

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

s2=sta.DeQuece();
s1=sta.DeQuece();
Double d1=Double.parseDouble(s1);
Double d2=Double.parseDouble(s2);
d1=d1-d2;
sta.InQuece(""+d1);

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

s2=sta.DeQuece();
s1=sta.DeQuece();
Double d1=Double.parseDouble(s1);
Double d2=Double.parseDouble(s2);
d1=d1/d2;
sta.InQuece(""+d1);

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

s2=sta.DeQuece();
s1=sta.DeQuece();
Double d1=Double.parseDouble(s1);
Double d2=Double.parseDouble(s2);
d1=d1*d2;
sta.InQuece(""+d1);


s=sta.DeQuece();
return Double.parseDouble(s);

public String InfixToPostfix(String s)

String restr="";
String temp="";
StringTokenizer st=new StringTokenizer(s,"+-/*#() ",true);
Stack sta=new Stack();
sta.InQuece("#");
while(st.hasMoreTokens())

temp=st.nextToken();
if(temp.equals("#"))

while(true)

String t=sta.DeQuece();
if(t.equals("#"))

break;

restr=restr+t+" ";

break;

else if(temp.equals(" "))
continue;
else if(!(temp.equals("(")||temp.equals(")")||temp.equals("+")||temp.equals("-")||temp.equals("*")||temp.equals("/")))

restr=restr+temp+" ";

else if(temp.equals(")"))

while(true)

String t=sta.DeQuece();
if(t.equals("("))
break;
else

restr=restr+t+" ";



else if(temp.equals("(")||temp.equals("+")||temp.equals("-")||temp.equals("*")||temp.equals("/"))

while(icp(temp)<=isp(sta.Front()))

String t=sta.DeQuece();
restr=restr+t+" ";

sta.InQuece(temp);

//sta.Sprint();

return restr;

public int icp(String s)

if(s.equals("#"))
return 0;
else if(s.equals("("))
return 7;
else if(s.equals("*")||s.equals("/"))
return 4;
else if(s.equals("+")||s.equals("-"))
return 2;
else if(s.equals(")"))
return 1;
else
return -1;

public int isp(String s)

if(s.equals("#"))
return 0;
else if(s.equals("("))
return 1;
else if(s.equals("*")||s.equals("/"))
return 5;
else if(s.equals("+")||s.equals("-"))
return 3;
else if(s.equals(")"))
return 7;
else
return -1;

public static void main(String args[])

Calculator c=new Calculator();
c.setFrame();
System.out.println(c.cal(c.InfixToPostfix("1*(2+3/4)*10#")));

static class action implements ActionListener

public void actionPerformed(ActionEvent e)

Button bu=(Button)e.getSource();
//ltemp=labelstr;
if(flag==1)

labelstr="";
flag=0;

if(bu==b0)
labelstr=labelstr+"0";
else if(bu==b1)
labelstr=labelstr+"1";
else if(bu==b2)
labelstr=labelstr+"2";
else if(bu==b3)
labelstr=labelstr+"3";
else if(bu==b4)
labelstr=labelstr+"4";
else if(bu==b5)
labelstr=labelstr+"5";
else if(bu==b6)
labelstr=labelstr+"6";
else if(bu==b7)
labelstr=labelstr+"7";
else if(bu==b8)
labelstr=labelstr+"8";
else if(bu==b9)
labelstr=labelstr+"9";
else if(bu==b10)
labelstr=labelstr+"+";
else if(bu==b11)
labelstr=labelstr+"-";
else if(bu==b12)
labelstr=labelstr+"*";
else if(bu==b13)
labelstr=labelstr+"/";
else if(bu==b14)//AC

ltemp=labelstr;
labelstr="0.";
flag=1;

else if(bu==b15)//C

labelstr=labelstr.substring(0, labelstr.length()-1);
if(labelstr.length()==0)

labelstr="0.";
flag=1;


else if(bu==b16)//=

ltemp=labelstr;
double b=new Calculator().cal(new Calculator().InfixToPostfix(labelstr+"#"));
labelstr=""+b;
lab.setText(labelstr);
flag=1;
return;

else if(bu==b17)

labelstr=labelstr+"(";

else if(bu==b18)

labelstr=labelstr+")";

else if(bu==b19)

labelstr=ltemp;

lab.setText(labelstr);


static class window extends WindowAdapter

public void windowClosing(WindowEvent e)

frm.dispose();
System.exit(0);


参考技术A http://www.sap-img.com/java/a-java-calculator.htm
我已经发给你了,feixianyexin这个邮箱的。直接双击执行html就可以了。或者命令行:appletviewer calculator.html
记得给分

通达OA系统客户机无法登陆求高手赐教谢谢在线等急急急。

通达OA2009办公系统。下载的机器完全可以登陆。其他机器却无法登陆OA界面,防火墙以及局域网全是通的。请求高手赐教。现在没分了。以后补上 。谢谢了。在线等呢。。比较急

参考技术A 防火墙设置允许apache访问网络,并开放OA端口。可以停止防火墙,测试是不是防火墙影响。 参考技术B 用的谁的主机呀! 主机限制了IP了吗 换电脑试试 是不是有人恶意攻击了你的系统! 被主机自动限制了

以上是关于求JAVA编的简易计算器,急急急的主要内容,如果未能解决你的问题,请参考以下文章

数据结构哈希表,求大神,急急急

java编程语言谁会,下面题目帮解答一下,要详细步骤啊…………谢谢 急急急求……

数据结构哈希表,求大神,急急急

求java自动生成一个序列号的方法,急急急...

求一个咸网,,急急急

急急急~~求JAVA中用方法写出一个银行ATM取款机的代码怎么写!!