问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

高分求 用JAVA编写计算器界面(只要界面)代码!

发布网友 发布时间:2022-06-03 05:49

我来回答

1个回答

热心网友 时间:2023-10-12 18:23

package importantpg;
import java.awt.*;
import java.awt.event.*;
public class jisuanqi
{
TextArea tf=new TextArea(3,50 );
Button lb=new Button("clear");
Panel p1=new Panel();
Panel p2=new Panel();
public jisuanqi()
{ Frame f=new Frame("计算器");
Panel p=new Panel();
f.setBackground(Color.white);
f.setSize(500, 1500);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e) {System.exit(1);}
});
Button[] b=new Button[18]; b[10]=new Button("-"); b[15]=new Button("(");
b[11]=new Button("+"); b[12]=new Button("*"); b[16]=new Button(")");
b[13]=new Button("/"); b[14]=new Button("="); b[17]=new Button("退格");
for(int i=0;i<=9;++i)
{
b[i]=new Button(""+i);
}
p.setLayout(new GridLayout(6,3));
avent aa=new avent();
lb.addActionListener(aa);
for(int i=0;i<18;++i)
{
p.add(b[i]);b[i].addActionListener(aa);
}
p1.setLayout(new BorderLayout());
p1.add(lb,"North");p1.add(tf,"South");f.add(p1, "South");
f.add(p,"Center"); f.pack();
} //构造方法
public static void main(String args[])
{
new jisuanqi();
}
class avent implements ActionListener //事件体
{
public void actionPerformed(ActionEvent e)
{
String s=null; String in="";
s=e.getActionCommand();
if (s!="="&&s!=null&&s!="clear"&&s!="退格")
{
tf.append(s);
in+=s; s=null;
}
else if(s=="clear")
{
tf.replaceRange("",0,1000);
}else if(s=="=")
{
tf.append("="+jisuan(tf.getText()));
}
else if(s=="退格") {}
}///////////////////////////////////////////////事件处理方法
}
///////////////////////////////////////计算过程//////////////
static String jisuan(String s)
{
String hs= "";
char[] ch = new char[s.length()];
int top = -1;
for (int i = 0; i < s.length(); i++)
{
char rsc = s.charAt(i);
switch(rsc)
{
case ' ' : break;
case '+' : //操作符
case '-' :
while (top >= 0) //栈不为空时
{
char pc = ch[top--]; //pop Operator
if (pc == '(')
{
ch[++top] = pc; //push Operator
break;
}
else {hs = hs + pc;}
}
ch[++top] = rsc; //push Operator
hs += " ";break;
case '*' : //操作符
case '/' :
while (top >= 0) //栈不为空时
{
char c = ch[top--]; //pop Operator
if (c == '(')
{
ch[++top] = c; //push Operator
break;
}
else
{
if (c == '+' || c == '-')
{
ch[++top] = c; //push Operator
break;
}
else
{
hs = hs + c;
}
}
}
ch[++top] = rsc; //push Operator
hs += " ";
break;
case '(' : //操作符
ch[++top] = rsc;
hs+= " ";
break;
case ')' : //操作符
while (top >= 0) //栈不为空时
{
char c = ch[top--]; //pop Operator
if (c == '(')
{
break;
}
else
{
hs= hs + c;
}
}
hs += " ";
break;
default : //操作数
hs= hs + rsc;
break;
}//switch
}/////////////////////////////for
while (top >= 0)
{
hs= hs + ch[top--]; //pop Operator
}

//System.out.println("hs="+hs); //后缀
//////////////////////////////////////////////后缀////////////////////////////////////
//后缀表达式计算
double[] result = new double[hs.length()];
double x, y;
top = - 1;
String st = "";
for (int i = 0; i < hs.length(); i++)
{
char c = hs.charAt(i);
if ((c >= '0' && c <= '9') || c == '.')
{
st += c;
}

if ((c == ' ' && st != "") || i == hs.length() - 1)
{
result[++top] = Double.parseDouble(st) ; //push Operands
st = "";
}

if (c == '+' || c == '-' || c == '*' || c == '/')
{
if ((st != ""))
{
result[++top] =Double.parseDouble(st) ; //push Operands
st = "";
}
y = result[top--];
x = result[top--];
switch (c)
{
case '+' :
result[++top] = x+y;break;//push 中间结果再次入栈
case '-' :
result[++top] = x-y;break;
case '*' :
result[++top] = x*y;break;
case '/' :
result[++top] = x/y;break;
default :break;
}
}////////////////////if
} ///////////////////////for
return String.valueOf(result[top]); //pop 最终结果

} /////////////////////////jisuan
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
卡耐基的智慧大全集内容简介 会说话赢天下内容简介 卡耐基演讲与口才内容简介 商务口才训练内容简介 卡耐基金牌口才作者简介 卡耐基商务口才 作者简介 爱因斯坦的更多故事 杨柯叶谨言是什么电视 房贷和消费贷利率差别不大,但是还款金额差别挺大,都是怎么计算的... ...11月18号提现1500元、,11月25号还款1515,请问我还需要还 java编写有窗口界面应用程序 求代码 求java编写的登陆界面代码 电脑微信版怎么登陆2个吗 怎样在电脑上同时登陆两个 电脑能不能登录两个 电脑如何登陆2个 电脑可以登录两个吗 1982年闰四月十九戌时出生属狗人的命运 属狗男82年农历4月初十出生今年运气如何? 电脑如何登陆两个 1982年农历四月初二属狗的人一身运势 82年4月17日21点属狗今年运势如何 1982年4月4日(阴历三月十一)属狗的命运 1982年农历4月14日上午7时出生的运程每月 电脑怎么登录2个 学而思培优是经国家相关部门批准的吗 我自驾游去请问好 新安江山水画廊包船游 电脑怎么登录两个 电脑上怎么同时登陆两个 用Java语言编写一个图形界面,由于初学,下面是代码,求指教 JAVA列表界面代码 天龙八部里武当的属性点该怎么加?有几种加法? 天龙八部武当怎么打宝石和加点(高手来)! 天龙八部 新区打算玩 武当 怎么加点 全体?全灵还是全身法?哪个比较厉害? 天龙八部武当加点各种属性各加多少 淘宝里退货退款中上传凭证是什么意思 宝退货退款时 如何办理工行融e借互联互通(秒支付)撤销? 融e借还款短信提醒能取消吗 融e借为什么不能用了 直尺只要有刻度就可以量物体长度 这句话对不对? 怎么判断直尺的刻度,能否一眼知道它的固定尺度? 谁教我做福鼎肉片 摆摊的那种 用手机开店怎么注册呢 用手机开店怎么操作? 用手机开店该怎么注册呢 男 16岁 身高:170CM左右 体重59.5kg 脚长41.5码 那我应该穿多少码的鞋子? 170M的女生穿多大的鞋码算普通大众 哈尔滨从东北虎林园到太阳岛怎么走? 为什么c盘中不能放太多东西?