求不带界面的java用java编写计算器界面

Java程序设计 图形用户界面 小巫版简易计算器 - 巫_1曲待续
- 博客频道 - CSDN.NET
4475人阅读
功能:实现一个计算器应用程序
实验要求:编写一个模拟计算器的应用程序,使用面板和网格布局,
添加一个文本框,10个数字按钮(0~9),4个加减乘除按钮,
一个等号按钮,一个清除按钮,一个求平方根按钮,一个退格按钮,
要求将计算公式和结果显示在文本框中,实现效果如下图所示,
源程序保存为Ex5_2.java。
import javax.swing.*;
import javax.swing.JTextF
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.awt.C
public class Ex5_2 extends JFrame implements ActionListener
private JPanel p1 = new JPanel();
//创建面板
private JPanel p2 = new JPanel();
private JTextField t1;
//文本框1用来显示输入信息
private JTextField t2;
//文本框2用来显示结果信息
private JL
//标签信息
//显示屏所显示的字符串
double x,y;
//x和y都是运算数
//Z表示单击了那一个运算符.0表示&+&,1表示&-&,2表示&*&,3表示&/&
private JButton b[] = new JButton[12]; //创建一个有12个按钮的数组
private JButton b1,b2,b3,b4,b5,b6,b7,b8; //算术功能按钮
public Ex5_2()
super(&简易计算器&);
//窗口名称
Container c = getContentPane(); //创建内容面板对象
t1 = new JTextField(30);
t1.setEditable(false); //只能显示,不能编辑
t2 = new JTextField(30);
t2.setEditable(false); //只能显示,不能编辑
label = new JLabel(&欢迎使用小巫版计算器^_^o~ 努力!&);
label.setForeground(Color.blue);
//创建一个空字符串缓冲区
str=new StringBuffer();
p2.add(label); //添加标签到面板
p2.add(t2);
//添加文本框到面板
p2.add(t1);
//添加文本框到面板
p2.setLayout(new GridLayout(4,1)); //把面扳布局为4行1列
for(int i=0;i&10;i++) //分别为数组中0~9号的按钮设置标签,并注册监听器
String s=&&+i;
b[i]= new JButton(s);
b[i].addActionListener(this);
//实例化各个按钮
b[10]= new JButton(&-/+&); b[11]= new JButton(&.&);
b1= new JButton(&/&);
b2= new JButton(&Back&);
b3= new JButton(&*&);
b4= new JButton(&C&);
b5= new JButton(&+&);
b6= new JButton(&Sqrt&);
b7= new JButton(&-&);
b8= new JButton(&=&);
//设置按钮前景色
for(int i=0;i&12;i++)
b[i].setForeground(Color.blue);
b1.setForeground(Color.red); b3.setForeground(Color.red);
b5.setForeground(Color.red); b7.setForeground(Color.red);
b2.setForeground(Color.blue); b4.setForeground(Color.blue);
b6.setForeground(Color.red);
b8.setForeground(Color.blue);
//添加到面板
p1.add(b[7]); p1.add(b[8]); p1.add(b[9]); p1.add(b1); p1.add(b2);
p1.add(b[4]); p1.add(b[5]); p1.add(b[6]); p1.add(b3); p1.add(b4);
p1.add(b[1]); p1.add(b[2]); p1.add(b[3]); p1.add(b5); p1.add(b6);
p1.add(b[0]); p1.add(b[10]); p1.add(b[11]);p1.add(b7);p1.add(b8);
p1.setLayout(new GridLayout(4,5,5,5));
//注册监听器
b[10].addActionListener(this); b[11].addActionListener(this);
b1.addActionListener(this); b2.addActionListener(this);
b3.addActionListener(this); b4.addActionListener(this);
b5.addActionListener(this); b6.addActionListener(this);
b7.addActionListener(this); b8.addActionListener(this);
//将面板添加到内容面板
c.add(p2);
c.add(p1);
c.setLayout(new FlowLayout());
//设置为顺序布局
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭动作
setVisible(true); //设置为可见
setResizable(false); //禁止调整框架大小
setSize(400,300); //设置窗口大小
//主方法实现创建一个窗口
public static void main(String[] args)
Ex5_2 f = new Ex5_2(); }
//按钮的事件处理
public void actionPerformed(ActionEvent e)
if(e.getSource()==b4) //选择&C&清零
t1.setText(&0&);
//把文本框清零
t1.setHorizontalAlignment(JTextField.RIGHT); //文本对齐右边
str.setLength(0); //清空字符串缓冲区以准备接收新的输入运算数
else if(e.getSource()==b[10])//单击&+/-&选择输入的运算数是正数还是负数
x=Double.parseDouble(t1.getText().trim());//trim函数作用是去掉字符串中的空格
t1.setText(&&+(-x));
t1.setHorizontalAlignment(JTextField.RIGHT);
else if (e.getSource()==b5)//单击加号按钮获得x的值和z的值并清空y的值
x=Double.parseDouble(t1.getText().trim());
str.setLength(0);
else if(e.getSource()==b7)//单击减号按钮获得x的值和z的值并清空y的值
x=Double.parseDouble(t1.getText().trim());
str.setLength(0);
else if(e.getSource()==b3)//单击乘号按钮获得x的值和z的值并清空y的值
x=Double.parseDouble(t1.getText().trim());
str.setLength(0);
else if(e.getSource()==b1)//单击除号按钮获得x的值和z的值并清空y的值
x=Double.parseDouble(t1.getText().trim());
str.setLength(0);
else if(e.getSource()==b8)//单击等号按钮输出计算结果
str.setLength(0);
case 0: t1.setText(&&+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);
case 1: t1.setText(&&+(x-y)); t1.setHorizontalAlignment(JTextField.RIGHT);
case 2: t1.setText(&&+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT);
case 3: t1.setText(&&+(x/y)); t1.setHorizontalAlignment(JTextField.RIGHT);
else if(e.getSource()==b[11])//单击&.&按钮输入小数
if(t1.getText().trim().indexOf('.')!=-1)//判断字符串中是否已经包含了小数点
else //如果没有小数点
if(t1.getText().trim().equals(&0&))//如果初时显示为0
t1.setText(str.append(e.getActionCommand()).toString());
t1.setHorizontalAlignment(JTextField.RIGHT);
else if(t1.getText().trim().equals(&&))//如果初时显示为空则不做任何操作
t1.setText(str.append(e.getActionCommand()).toString());
t1.setHorizontalAlignment(JTextField.RIGHT);
else if(e.getSource()==b6) //求平方根
x=Double.parseDouble(t1.getText().trim());
t1.setText(&数字格式异常&);
t1.setHorizontalAlignment(JTextField.RIGHT);
t1.setText(&&+Math.sqrt(x));
t1.setHorizontalAlignment(JTextField.RIGHT);
str.setLength(0);
if(e.getSource()==b[0])//如果选择的是&0&这个数字键
if(t1.getText().trim().equals(&0&))//如果显示屏显示的为零不做操作
t1.setText(str.append(e.getActionCommand()).toString());
t1.setHorizontalAlignment(JTextField.RIGHT);
y=Double.parseDouble(t1.getText().trim());
else if (e.getSource()==b2) //选择的是back键
if(!t1.getText().trim().equals(&0&))//如果显示屏显示的不是零
if(str.length()!=1)
t1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常
t1.setHorizontalAlignment(JTextField.RIGHT);
t1.setText(&0&); t1.setHorizontalAlignment(JTextField.RIGHT);
str.setLength(0);
y=Double.parseDouble(t1.getText().trim());
t1.setText(str.append(e.getActionCommand()).toString());
t1.setHorizontalAlignment(JTextField.RIGHT);
y=Double.parseDouble(t1.getText().trim());
catch(NumberFormatException e1){ t1.setText(&数字格式异常&);
t1.setHorizontalAlignment(JTextField.RIGHT); }
catch(StringIndexOutOfBoundsException e1){t1.setText(&字符串索引越界&);
t1.setHorizontalAlignment(JTextField.RIGHT);}
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1411423次
积分:20521
积分:20521
排名:第149名
原创:567篇
转载:81篇
评论:1484条
难度:高级
类型:实战教学
阅读:39760
阅读:22497
文章:14篇
阅读:50157
文章:11篇
阅读:58508
文章:10篇
阅读:38547
文章:13篇
阅读:17907
文章:13篇
阅读:151170
移动开发者狂热群:注明入群理由,里面有一群热爱分享的开发者
(4)(12)(1)(5)(5)(6)(7)(2)(13)(11)(11)(8)(14)(10)(16)(8)(15)(23)(13)(12)(12)(11)(17)(28)(18)(20)(8)(11)(20)(13)(14)(10)(23)(18)(15)(36)(27)(47)(16)(3)(28)(33)(14)(13)
从入门到成长到成熟再到优秀,大多数程序员走了前面一段相似的道路,而有些人却走得更远一些!!!!急求!!!如何用java程序代码实现计算器界面_百度知道
急求!!!如何用java程序代码实现计算器界面
提问者采纳
&&&&nbsp.});&0&&nbsp.length];&//此时append=true若继续按按钮若继续按数字的话1;f;=&/zhidao/wh%3D450%2C600/sign=aafcaa6a09ab2fcb7d0a20cf431adfacaf2fdd988d;&public&+&//调用构造方法}public&nbsp.getText();;eve){//运行窗口关闭方法&&WindowAdapter(){//给窗口f添加窗口事件监听器&&//t1;f;i.&nbsp.//声明i以备后用&&&,&&nbsp.getActionCommand();&&&args[]){&计算器1;f;{&else&&nbsp,&quot.第一次的按话不会改变2;&&for(int&&&&&&&&&&;&&&&{&//把命令字符串赋值给operator&&&nbsp://f;actionPerformed(ActionEvent&&=&&&&nbsp,&&nbsp.jpg" esrc="String&comm&&nbsp.append&;&&nbsp.setVisible(true);&&}else&;&nbsp.*;//op2第二个数&&//使面板选择网格布局管理器以备储存16个按钮(4行4列)&nbsp,&=&&&&&&&nbsp,&&&}&JiSuanQi_new&public&&nbsp,&&&/zhidao/wh%3D600%2C800/sign=bfd3fd1f365caa3c007ed0a20cf431adfacaf2fdd988d.&if(&d2&//声明标签数组label1存放按钮上的标签&&String&;&}&//声明按钮数组存放16个按钮&&)){&Button[&&//初始化窗口f;i&&&&;=&nbsp.setSize(250,&&&=&&&&&&double&&&p1=new&operator&JiSuanQi_new()//构造方法{&&&&&t1;&&&i=0,&;&&int&nbsp.equals(&&nbsp.getText();&//此时append为false即若继续按按钮若按数字的话将重复上面的动作;if(&t1;&&&Panel&&&else&//因为此时append为false执行这个&&&&&&&D&nbsp.&nbsp://f;&&&=&&&&op2&&nbsp.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="&nbsp,&&&&nbsp.addWindowListener(new&&&ae)&&&&&&&&nbsp,在面板p1上添加上16个按钮&;Frame(&&3&&;&&&&nbsp,即;&d1&&//备用public&0&quot,200);&&p1;b[i]:只能进行单个数字的计算)&&+&&&&{&t1;&p1;&nbsp.indexOf(comm);&&-&&&/zhidao/pic/item/b3b7d0a20cf431adfacaf2fdd988d;&nbsp,4;String&{//按钮被操作发生&d1&nbsp.非第一次按得话会覆盖之前按得数字(即缺点;&=&b&else&&t1=new&&&&nbsp.setText(d1+&&new&&&&&&t1;);&&&&&&//退出程序&&nbsp.d1&&&;new&nbsp!=-1))//如果相关命令字符串为+-*/之间的数字则执行&&&&&&&nbsp,使每个按钮添加事件监听器;GridLayout(4;&//初始化按钮数组b&Panel();+-*/&&nbsp.add(BorderLayout.parseDouble(op1);&;&=&nbsp://f;t1;&&&&&&}}}<a href="http,按符号的话将覆盖之前的符号&&);&nbsp.indexOf(&if((&}&nbsp.getText();&nbsp.&&&&b;//将文本行t1设置为相关命令字符串(你按中的按钮代码)&&&b[i]&void&&&&//返回与此动作相关的命令字符串;d2;&t1;&4&t1,&&;&;}&2&&//初始化文本行t1&;&nbsp,4;=&}&&//声明面板p1&;&&-&&&&&-&nbsp.indexOf(comm);{&&&&=&nbsp.setText(temp+&quot,&&=&i++)//利用for循环把标签放在按钮上;&new&//把标签依次放在16个按钮上&&&//把文本行他添加到窗口的北部&&&//保存&&nbsp.&quot.add(b[i]);}&&&&nbsp.parseDouble(op2);&&BorderLayout());=&nbsp.addActionListener(this);&&&&&&boolean&&&&250);S&&&f;d2;&if(//初始化面板p1&&nbsp.号继续按&nbsp,起名字计算器1;&&//设置窗口大小&&//运算数备用&&b;&&JiSuanQi_new();&nbsp,t1);&d1&TextField();d2;&&&&&+&append&&&f;&String&nbsp.add(BorderLappend&nbsp,&&&&&nbsp.awt.equals(&9&&&nbsp,&&String&&&false.setLayout(new&&=&&&Frame&nbsp!=-1)//如果相关命令字符串为0~9之间的数字则执行&nbsp.CENTER;//声明文本行t1&d1&&}&&main(String&nbsp.equals(comm))//如果按的是=号;)==-1){&void&)){&f;=&append&&private&=&d1&&&{&&&&ActionListener{&&&=&static&nbsp.exit(0);&*&&&&&nbsp.&&private&&TextField&*&&&//使每个按钮添加动作事件监听器&&&&d1&&&.length.setLayout(new&operator&private&}&&;&&&+&&t1;=&&nbsp.*;*&&&temp&&;;&&&&&&=&nbsp。&&nbsp.setLocation(200;&nbsp.setText(comm);;&nbsp,则按条件进行下面的运算&&5&&&//新数字&nbsp.0&//把第一个数赋值给op1&&&}else{&&=&String&&&&&&//运算符备用&.setText(temp+comm);&&&void&//把面吧p1添加到窗口的中间&&//分别将按钮添加到面板p1上&/&&8&&=&p1.getText();&nbsp:使用者第一次点击的按钮是什么;&=&temp&nbsp.&&{&}else&&import&&&&&nbsppackage&&&d1&private&nbsp.equals(comm))//若是;&;if(&;&if(&=&&//为窗口选择边界布局管理器&&//显示计算结果&);&&=&&nbsp,&quot,&&nbsp.setText(comm);};/&//显示窗口}public&&&&&&&windowClosing(WindowEvent&&&&nbsp.d1&nbsp,&}else&label&&&op1&t1;append&)){&&&&.0&if(&f=new&&&d2&nbsp,4));7&&&nbsp.equals(&&if(jisuanqi_&D=&&;double&nbsp,p1);Button[]&&class&String[]&if(append){&&&&f;&{&&1&6&&Button(label[i]);implements&&&&nbsp.NORTH;import&&nbsp
提问者评价
谢谢!!!
其他类似问题
您可能关注的推广回答者:
java程序的相关知识
其他1条回答
50;),20)。,20)。,至于其他的按钮;
t2 = new JTextField();
caculate.setBounds(30;相加等于&quot.setBounds(150; private JTextField result=null.setLayout(null);第一个数&
result.setBounds(30。我想你自己懂这个.getText().setBounds(150;
no2=new JLabel(&
t2.parseInt(str2);/
no1。,100,20),20);
this.setSize(420。; private JTextField t1= } }这只是一个小小的例子;
t1=new JTextField()。.parseInt(str1).setVisible(true);
no2;&#47.setText(num3+&quot.add(caculate);&quot,60;
int num2=I
result = new JTextField().setLocation(500,20)public class GUI
extends JFrame { private JButton caculate=null。还有就是键的方位什么的自己也可以设置啊.getText();去掉布局管理器
no1=new JLabel(&
} public static void main(String[] args) {
new GUI(),80;
caculate,60;);),90.add(no2), 420);
this.add(result);
int num1=I
&#47,你自己可以加进去的,100;).add(no1),其他的些事件,20.setBounds(150,20);
this.setTitle(&
this.setBounds(10;窗口程序管理&
caculate=new JButton(&quot.add(t2);}
);).add(t1),20;
int num3=num1+num2; private JTextField t2=/ private JLabel no1=null,80;this.addActionListener(
new ActionListener(){
public void actionPerformed( ActionEvent e) {
String str1=t1;
String str2=t2,500);
GUI(){第二个数&quot.setLayout(new FlowLayout()); private JLabel no2=null
你实在不怎么会java界面代码编写的话可以尝试用Jbuilder这个开发工具。这个工具在这java图形设计上是有优势的
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求不带界面的java计算器_百度知道
求不带界面的java计算器
002.419; 2; 2 )sqrt ( 2!要求:无界面。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~示例键盘输入,求大神帮忙写下代码、平方根.501:( 1 + ( ( 2、指数.002.001、绝对值功能:-105.621000,不胜感激,结果保留小数点后两位.202.3 + 3 ) * ( 4 * -5 ) ) )( ( 1 + sqrt ( 5; 4 ) )~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~可以实现如下输出.0 )( ( 1 + 2 ) * ( 4 - 1 ) )abs ( -2.0 ) ) &#47.0 )1000( 5 &#47.2 )( 2 ^ ( 6 &#47不知道怎么检查括号问题,我可以再追加100分,只能写出四则运算的程序,只输出计算结果,小弟已经折腾一天了,可以实现加减乘除
绝对会追加分数的?不胜感激大神们能不能帮忙写下java的!!
附件里是C语言版的。<file fsid="049" link="/share/link?shareid=&uk=" name="加减乘除计算器不要界面和c语言的没多大区别
其他类似问题
java计算器的相关知识
按默认排序
其他2条回答
没学过数据结构?表达式计算需要使用栈来操作。
没有。。。大神能帮忙看一下么?
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁源码网 | 网站源码 | 源码下载 | 网页特效代码 | 网页模板 | 软件大全 | cms教程
源码网每日更新最新最全的精品网站源码
热门搜索:网站源码 源码下载 网页特效代码
在线客服代码
猜你也喜欢看这些 ......
这些是最新的 ......
当前位置:
java开发计算器源代码
源码大小:0.02MB
源码类别:国产软件
源码语言:简体中文
运行环境:Java/Eclipse
源码评级:
源码授权:免费版
相关链接:暂无
演示地址:暂无
最后更新: 16:26:28
使用Java制作计算器的实例,适合学习的Java源码下载。运用了Java2的图形界面技术和消息响应技术。通过图形界面技术,制作了计算器的用户界面。通过消息响应技术,实现响应用户的操作的功能,最终实现人机交互。用到的JAVA知识点有:窗口布局器GridLayout的应用,对按钮消息的监听和响应。
程序及注释
首先定义具有计算功能的类Calculator。在类Calculator中定义处理加减乘除运算的函数,分别命名为opAdd (),opSubtract(),opMultiply(),opDivide()。然后实现人机交互效果,要先定义实现用户界面类CalculatorGUI。通过Panel类的setLayout()函数进行用户界面的布局。此外,要通过actionPerformed(ActionEvent event))函数来实现对按钮事件的监听,并根据不同的按钮事件进行不同的运算。最后实现用户界面类与处理运算类的融合.,所以要在用户界面类(CalculatorGUI)中定义处理运算类(Calculator)的对象,这样,就完成了计算器的功能。
下载地址/Download想把if,else换成switch,case,但是不会把 equals里面的值转为char.请求帮忙..
if(s.equals("CE"))
//如果是CE则清除文本框
tResult.setText("0.");
else if(s.equals("BackSpace"))
if(!tResult.getText().trim().equals("0."))
//如果文本框中有内容
if(str.length()!=1 && str.length()!=0)
tResult.setText(str.delete(str.length()-1,str.length()).toString());
tResult.setText("0.");
str.setLength(0);
op2 = Double.parseDouble(tResult.getText().trim());
else if(s.equals("C"))
//如果是C删除当前计算
tResult.setText("0.");
op1 = op2 = 0;
str.replace(0, str.length(), " ");
preOp = currentOp = 0;
else if(s.equals("MC"))
//如果是MC则清除缓冲区
String temp = "";
memory.replace(0, memory.length(), temp);
bM.setText(" ");
else if(s.equals("MR"))
//如果按键为MR则恢复缓冲区的数到文本框
tResult.setText(memory.toString());
else if(s.equals("MS"))
//如果按键为MS则将文本框的数存入缓冲区
String s1 = tResult.getText().trim();
memory.replace(0, memory.length(), s1);
bM.setText("M");
else if(s.equals("M+"))
//如果按键为MS则将文本框值与缓冲区的数相加但不显示结果
String temp1 = tResult.getText().trim();
double dtemp = Double.parseDouble(temp1);
String temp2 = memory.toString();
dtemp += Double.parseDouble(temp2);
temp1 = String.valueOf(dtemp);
memory.replace(0, memory.length(), temp1);
else if(s.equals("1/x"))
//如果按键为1/x则将文本框中的数据为它的倒数
String temp = tResult.getText().trim();
double dtemp = Double.parseDouble(temp);
tResult.setText(""+1/dtemp);
else if(s.equals("sqrt"))
//如果按键为sqrt则将文本框中的内容求平方根
String temp = tResult.getText().trim();
double dtemp = Double.parseDouble(temp);
tResult.setText(""+Math.sqrt(dtemp));
问题补充:这只是其中的一段而已.
按钮就计算器中那几个计算符,
能详细讲一下怎么映射?
Yiwu_zh 写道java里面switch的合法参数只有int,short,byte,char,String是不包括的。所以要转换的话,必须把if里面的String映射到以上四种类型其中之一。计算器也就那么几个button,可以自己做一个映射表,“CE”-&0;“BackSpace”-&1.....基本就没问题了。
问题补充:直接
tb["CE"] = 0;
tb["BackSpace"] = 1;
tb["C"] = 2;
......
这个?
刚接触java.忘详细解释下.
Yiwu_zh 写道最方便就用Map&QString,int& tb容器
tb["CE"] = 0;
tb["BackSpace"] = 1;
tb["C"] = 2;
......
一直下去构造一个映射表
就能够转换为
switch(tb[s]) {
& case 0: //do "CE" works
& case 1: //do "Backspace" works
..
}
问题补充:我把代码贴全.你帮我写出来好了.真的弄不懂.
Yiwu_zh 写道你查下Map容器用法,就知道了。
问题补充:
public void actionPerformed(ActionEvent e)
String s = e.getActionCommand();
if(s.equals("复制(C)"))
String temp = tResult.getText().trim();
copyBoard.replace(0, copyBoard.length(), temp);
mPaste.setEnabled(true);
else if(s.equals("粘贴(p)"))
tResult.setText(copyBoard.toString());
if(s.equals("CE"))
//如果是CE则清除文本框
tResult.setText("0.");
else if(s.equals("BackSpace"))
if(!tResult.getText().trim().equals("0."))
//如果文本框中有内容
if(str.length()!=1 && str.length()!=0)
tResult.setText(str.delete(str.length()-1,str.length()).toString());
tResult.setText("0.");
str.setLength(0);
op2 = Double.parseDouble(tResult.getText().trim());
else if(s.equals("C"))
//如果是C删除当前计算
tResult.setText("0.");
op1 = op2 = 0;
str.replace(0, str.length(), " ");
preOp = currentOp = 0;
else if(s.equals("MC"))
//如果是MC则清除缓冲区
String temp = "";
memory.replace(0, memory.length(), temp);
bM.setText(" ");
else if(s.equals("MR"))
//如果按键为MR则恢复缓冲区的数到文本框
tResult.setText(memory.toString());
else if(s.equals("MS"))
//如果按键为MS则将文本框的数存入缓冲区
String s1 = tResult.getText().trim();
memory.replace(0, memory.length(), s1);
bM.setText("M");
else if(s.equals("M+"))
//如果按键为MS则将文本框值与缓冲区的数相加但不显示结果
String temp1 = tResult.getText().trim();
double dtemp = Double.parseDouble(temp1);
String temp2 = memory.toString();
dtemp += Double.parseDouble(temp2);
temp1 = String.valueOf(dtemp);
memory.replace(0, memory.length(), temp1);
else if(s.equals("1/x"))
//如果按键为1/x则将文本框中的数据为它的倒数
String temp = tResult.getText().trim();
double dtemp = Double.parseDouble(temp);
tResult.setText(""+1/dtemp);
else if(s.equals("sqrt"))
//如果按键为sqrt则将文本框中的内容求平方根
String temp = tResult.getText().trim();
double dtemp = Double.parseDouble(temp);
tResult.setText(""+Math.sqrt(dtemp));
else if(s.equals("+"))
str.setLength(0);
if(currentOp==0)
preOp = currentOp = 1;
tResult.setText(""+op1);
currentOp = preOp;
preOp = 1;
switch(currentOp){
op1 += op2;
tResult.setText(""+op1);
op1 -= op2;
tResult.setText(""+op1);
op1 *= op2;
tResult.setText(""+op1);
op1 /= op2;
tResult.setText(""+op1);
else if(s.equals("-")){
str.setLength(0);
if(currentOp==0)
preOp=currentOp=2;//op1=op2;op2=0;
tResult.setText(""+op1);
currentOp =preOp;
switch(currentOp){
op1=op1+op2;
tResult.setText(""+op1);
op1=op1-op2;
tResult.setText(""+op1);
op1=op1*op2;
tResult.setText(""+op1);
op1=op1/op2;
tResult.setText(""+op1);
else if(s.equals("*"))//*
str.setLength(0);
if(currentOp==0)
preOp=currentOp=3;//op1=op2;op2=1;
tResult.setText(""+op1);//op1=op2;
currentOp =preOp;
switch(currentOp){
op1=op1+op2;
tResult.setText(""+op1);
op1=op1-op2;
tResult.setText(""+op1);
op1=op1*op2;
tResult.setText(""+op1);
op1=op1/op2;
tResult.setText(""+op1);
else if(s.equals("/"))// /
str.setLength(0);
if(currentOp==0)
preOp=currentOp=4;//op2=1;
tResult.setText(""+op1);//op1=op2;
currentOp =preOp;
switch(currentOp){
op1=op1+op2;
tResult.setText(""+op1);
op1=op1-op2;
tResult.setText(""+op1);
op1=op1*op2;
tResult.setText(""+op1);
op1=op1/op2;
tResult.setText(""+op1);
else if(s.equals("="))// =
if(currentOp==0)
str.setLength(0);
tResult.setText(""+op2);
str.setLength(0);
currentOp =preOp;
switch(currentOp){
op1=op1+op2;
tResult.setText(""+op1);
op1=op1-op2;
tResult.setText(""+op1);
op1=op1*op2;
tResult.setText(""+op1);
op1=op1/op2;tResult.setText(""+op1);
currentOp=0;
else if(s.equals("."))
if(tResult.getText().trim().indexOf('.')!=-1);
if(tResult.getText().trim().equals("0")) {
str.setLength(0);
tResult.setText((str.append("0"+s)).toString());
//else if(tResult.getText().trim().equals("")){}//如果初时显示为空则不做任何操作
tResult.setText((str.append(s)).toString());
else if(s.equals("0"))//如果选择的是"0"这个数字键
if(tResult.getText().trim().equals("0.")){}
tResult.setText(str.append(s).toString());
op2=Double.parseDouble(tResult.getText().trim());
tResult.setText(str.append(s).toString());
op2=Double.parseDouble(tResult.getText().trim());
if(currentOp==0)
采纳的答案
最方便就用Map&QString,int& tb容器
tb["CE"] = 0;
tb["BackSpace"] = 1;
tb["C"] = 2;
......
一直下去构造一个映射表
就能够转换为
switch(tb[s]) {
& case 0: //do "CE" works
& case 1: //do "Backspace" works
..
}
晕了,干脆换成jdk1.7吧。呵呵。
你查下Map容器用法,就知道了。
java里面switch的合法参数只有int,short,byte,char,String是不包括的。所以要转换的话,必须把if里面的String映射到以上四种类型其中之一。计算器也就那么几个button,可以自己做一个映射表,“CE”-&0;“BackSpace”-&1.....基本就没问题了。
已解决问题
未解决问题

我要回帖

更多关于 用java编写计算器界面 的文章

 

随机推荐