JAVA 计算器编写 用到哪些

问题描述

JAVA计算器编写用到哪些

解决方案

解决方案二:
注释写的很详细packageswing;importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JTextField;/***一个计算器,与Windows附件自带计算器的标准版功能、界面相仿。但还不支持键盘操作。*/publicclassCalculatorextendsJFrameimplementsActionListener{/**计算器上的键的显示名字*/privatefinalString[]KEYS={"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};/**计算器上的功能键的显示名字*/privatefinalString[]COMMAND={"Backspace","CE","C"};/**计算器左边的M的显示名字*/privatefinalString[]M={"","MC","MR","MS","M+"};/**计算器上键的按钮*/privateJButtonkeys[]=newJButton[KEYS.length];/**计算器上的功能键的按钮*/privateJButtoncommands[]=newJButton[COMMAND.length];/**计算器左边的M的按钮*/privateJButtonm[]=newJButton[M.length];/**计算结果文本框*/privateJTextFieldresultText=newJTextField("0");//标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字privatebooleanfirstDigit=true;//计算的中间结果。privatedoubleresultNum=0.0;//当前运算的运算符privateStringoperator="=";//操作是否合法privatebooleanoperateValidFlag=true;/***构造函数*/publicCalculator(){super();//初始化计算器init();//设置计算器的背景颜色this.setBackground(Color.LIGHT_GRAY);this.setTitle("计算器");//在屏幕(500,300)坐标处显示计算器this.setLocation(500,300);//不许修改计算器的大小this.setResizable(false);//使计算器中各组件大小合适this.pack();}/***初始化计算器*/privatevoidinit(){//文本框中的内容采用右对齐方式resultText.setHorizontalAlignment(JTextField.RIGHT);//不允许修改结果文本框resultText.setEditable(false);//设置文本框背景颜色为白色resultText.setBackground(Color.white);//初始化计算器上键的按钮,将键放在一个画板内JPanelcalckeysPanel=newJPanel();//用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素calckeysPanel.setLayout(newGridLayout(4,5,3,3));for(inti=0;i<KEYS.length;i++){keys[i]=newJButton(KEYS[i]);calckeysPanel.add(keys[i]);keys[i].setForeground(Color.blue);}//运算符键用红色标示,其他键用蓝色表示keys[3].setForeground(Color.red);keys[8].setForeground(Color.red);keys[13].setForeground(Color.red);keys[18].setForeground(Color.red);keys[19].setForeground(Color.red);//初始化功能键,都用红色标示。将功能键放在一个画板内JPanelcommandsPanel=newJPanel();//用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素commandsPanel.setLayout(newGridLayout(1,3,3,3));for(inti=0;i<COMMAND.length;i++){commands[i]=newJButton(COMMAND[i]);commandsPanel.add(commands[i]);commands[i].setForeground(Color.red);}//初始化M键,用红色标示,将M键放在一个画板内JPanelcalmsPanel=newJPanel();//用网格布局管理器,5行,1列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素calmsPanel.setLayout(newGridLayout(5,1,3,3));for(inti=0;i<M.length;i++){m[i]=newJButton(M[i]);calmsPanel.add(m[i]);m[i].setForeground(Color.red);}//下面进行计算器的整体布局,将calckeys和command画板放在计算器的中部,//将文本框放在北部,将calms画板放在计算器的西部。//新建一个大的画板,将上面建立的command和calckeys画板放在该画板内JPanelpanel1=newJPanel();//画板采用边界布局管理器,画板里组件之间的水平和垂直方向上间隔都为3象素panel1.setLayout(newBorderLayout(3,3));panel1.add("North",commandsPanel);panel1.add("West",calckeysPanel);//建立一个画板放文本框JPaneltop=newJPanel();top.setLayout(newBorderLayout());top.add("Center",resultText);//整体布局getContentPane().setLayout(newBorderLayout(3,5));getContentPane().add("North",top);getContentPane().add("Center",panel1);getContentPane().add("West",calmsPanel);//为各按钮添加事件侦听器//都使用同一个事件侦听器,即本对象。本类的声明中有implementsActionListenerfor(inti=0;i<KEYS.length;i++){keys[i].addActionListener(this);}for(inti=0;i<COMMAND.length;i++){commands[i].addActionListener(this);}for(inti=0;i<M.length;i++){m[i].addActionListener(this);}}/***处理事件*/publicvoidactionPerformed(ActionEvente){//获取事件源的标签Stringlabel=e.getActionCommand();if(label.equals(COMMAND[0])){//用户按了"Backspace"键handleBackspace();}elseif(label.equals(COMMAND[1])){//用户按了"CE"键resultText.setText("0");}elseif(label.equals(COMMAND[2])){//用户按了"C"键handleC();}elseif("0123456789.".indexOf(label)>=0){//用户按了数字键或者小数点键handleNumber(label);//handlezero(zero);}else{//用户按了运算符键handleOperator(label);}}/***处理Backspace键被按下的事件*/privatevoidhandleBackspace(){Stringtext=resultText.getText();inti=text.length();if(i>0){//退格,将文本最后一个字符去掉text=text.substring(0,i-1);if(text.length()==0){//如果文本没有了内容,则初始化计算器的各种值resultText.setText("0");firstDigit=true;operator="=";}else{//显示新的文本resultText.setText(text);}}}/***处理数字键被按下的事件**@paramkey*/privatevoidhandleNumber(Stringkey){if(firstDigit){//输入的第一个数字resultText.setText(key);}elseif((key.equals("."))&&(resultText.getText().indexOf(".")<0)){//输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面resultText.setText(resultText.getText()+".");}elseif(!key.equals(".")){//如果输入的不是小数点,则将数字附在结果文本框的后面resultText.setText(resultText.getText()+key);}//以后输入的肯定不是第一个数字了firstDigit=false;}/***处理C键被按下的事件*/privatevoidhandleC(){//初始化计算器的各种值resultText.setText("0");firstDigit=true;operator="=";}/***处理运算符键被按下的事件**@paramkey*/privatevoidhandleOperator(Stringkey){if(operator.equals("/")){//除法运算//如果当前结果文本框中的值等于0if(getNumberFromText()==0.0){//操作不合法operateValidFlag=false;resultText.setText("除数不能为零");}else{resultNum/=getNumberFromText();}}elseif(operator.equals("1/x")){//倒数运算if(resultNum==0.0){//操作不合法operateValidFlag=false;resultText.setText("零没有倒数");}else{resultNum=1/resultNum;}}elseif(operator.equals("+")){//加法运算resultNum+=getNumberFromText();}elseif(operator.equals("-")){//减法运算resultNum-=getNumberFromText();}elseif(operator.equals("*")){//乘法运算resultNum*=getNumberFromText();}elseif(operator.equals("sqrt")){//平方根运算resultNum=Math.sqrt(resultNum);}elseif(operator.equals("%")){//百分号运算,除以100resultNum=resultNum/100;}elseif(operator.equals("+/-")){//正数负数运算resultNum=resultNum*(-1);}elseif(operator.equals("=")){//赋值运算resultNum=getNumberFromText();}if(operateValidFlag){//双精度浮点数的运算longt1;doublet2;t1=(long)resultNum;t2=resultNum-t1;if(t2==0){resultText.setText(String.valueOf(t1));}else{resultText.setText(String.valueOf(resultNum));}}//运算符等于用户按的按钮operator=key;firstDigit=true;operateValidFlag=true;}/***从结果文本框中获取数字**@return*/privatedoublegetNumberFromText(){doubleresult=0;try{result=Double.valueOf(resultText.getText()).doubleValue();}catch(NumberFormatExceptione){}returnresult;}publicstaticvoidmain(Stringargs[]){Calculatorcalculator1=newCalculator();calculator1.setVisible(true);calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}

解决方案三:
java中的swing、swing.event、awt、awt.event都是必须要引入的包;事件监听器是很关键的部分;首先设计界面,再逐个做按钮里面的代码。
解决方案四:
后缀表达式、表达式二叉树

时间: 2024-11-03 02:02:05

JAVA 计算器编写 用到哪些的相关文章

Java计算器编写怎么点击数字按钮连续显示到文本框,菜鸟跪求大神

问题描述 publicvoidactionPerformed(ActionEvente){if(e.getSource()==b1);tf1.setText(tf1.getText()+e.getActionCommand());}设置监听,不过这个方式是所有按钮比如+-都显示,怎么才能只让数字显示上面呢?请大神说的详细点,刚学很多都不太懂. 解决方案

Android计算器编写代码_Android

其实这个安卓计算机,所有的后台思想与<C#计算器编写代码>是一模一样的.Win窗体程序移植到安卓,从C#到Java其实很简单的,因为两者的基本语法都很相像,唯一的难点是安卓的xml布局部分,不像C#窗体能够直接拖.  还是如下图一个能够完成基本四则运算的计算器:  先在res\values\strings.xml设置按钮相应的字体,以免布局文件警告满天飞: <?xml version="1.0" encoding="utf-8"?> <

Android计算器编写代码

其实这个安卓计算机,所有的后台思想与<C#计算器编写代码>是一模一样的.Win窗体程序移植到安卓,从C#到Java其实很简单的,因为两者的基本语法都很相像,唯一的难点是安卓的xml布局部分,不像C#窗体能够直接拖.  还是如下图一个能够完成基本四则运算的计算器: 先在res\values\strings.xml设置按钮相应的字体,以免布局文件警告满天飞: <?xml version="1.0" encoding="utf-8"?> <r

JAVA代码编写的30条建议

JAVA代码编写的30条建议 (1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母.例如: ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母.这样便可标志出它们属于编译期的常数. Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此.对于域名扩展名称

Apache Thrift入门(安装、测试与java程序编写)

安装Apache Thrift ubuntu linux运行: #!/bin/bash #下载 wget http://mirrors.cnnic.cn/apache/thrift/0.9.1/thrift-0.9.1.tar.gz tar zxvf thrift-0.9.1.tar.gz cd thrift-0.9.1.tar.gz ./configure make make install #编译java依赖包 cd lib/java ant 安装ubuntu依赖 sudo apt-get

java代码-用java如何编写翻牌小游戏

问题描述 用java如何编写翻牌小游戏 用java编写翻牌小游戏,点击一张牌,它周围的牌都会翻过来,直到完全翻过来,求源代码 解决方案 http://download.csdn.net/detail/qq_21543697/8595769 解决方案二: 如何用java编写小游戏如何用java编写小游戏用JAVA编写小游戏连连看

谁能帮我把这个代码补全,就差一点点了。java语法编写本地监控系统

问题描述 谁能帮我把这个代码补全,就差一点点了.java语法编写本地监控系统 package com.tz.util; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; import javax.swing.JF

java语言编写的教务管理系统的研究

问题描述 java语言编写的教务管理系统的研究 请问java语言编写的教务管理系统怎么实现爆库和拿库,一般这种系统下有什么可以利用的0day和webshell? 解决方案 你首先应该好好学习,然后才谈得上"研究".投机取巧能研究出什么?胡乱看了几本地摊上的黑客画报也想搞破坏? 解决方案二: 现在学这个的也是鱼龙混杂啊

数据库-超市收银管理系统用java语言编写程序

问题描述 超市收银管理系统用java语言编写程序 超市收银管理系统 要求:使用图形用户界面. 由收银员输入顾客的会员卡卡号(若有卡).所购商品的货号等.从数据库中取出有关价格信息,再把这些信息返回给收银台.同时把该收银台的销售总量和有关种类商品的剩余量以及该持卡顾客的消费情况交数据库存储以供查询. 另外,对没有卡的消费情况不记录该顾客的消费情况等个人信息.如果一个未持卡顾客一次购物满200元,可为其发放一张会员卡,以后在该商场购物可向9折优惠 解决方案 参考:http://down.51cto.