求JAVA编的简易计算器,急急急
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求JAVA编的简易计算器,急急急相关的知识,希望对你有一定的参考价值。
要求:1、必须通过测试,千万别从别处随便抄一段代码给我,那些我都试过。2、将编译好的程序和源代码同时发到我邮箱中。renfei_emls@163.com注意是编译好了的。我把所有的财富全放上了哈。摆脱各位高手了,在线等。
简单的加减乘除开平方运算。就可以了
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编的简易计算器,急急急的主要内容,如果未能解决你的问题,请参考以下文章