自解析计算器课程设计报告_第1页
自解析计算器课程设计报告_第2页
自解析计算器课程设计报告_第3页
免费预览已结束,剩余34页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、解析计算器课程设计实验报告自解析计算器目录目录 2一 作品总体性能介绍与使用说明 3基本介绍: 3基本功能 : 3使用说明 : 4二 软件设计概要 4概述 4UML 类图 4三、软件各模块详细设计 61、Main 类 62、Calculator 类 73、Enter 类 74、ButtonListoner 类 75、Zuozhe 类 86、Help 类 87、StrSwitch 类 88、Priority 类 99、Stack 类 910、Core类 9四、运行结果测试样本 11测试环境: 11测试人员: 11测试时间: 11测试图样: 11五、源代码 16Main 16Calculator

2、16Core 26priority 29Stack 30StrSwitch 31Zuozhe 36Help 36自解析计算器摘要:本作品是通过 java 语言编写而成的一个多功能自解析计算器。该程序可以 在 NetBeans 平台上运行。支持常用运算符的运算,具有插入括号的功能,支持 科学计数法输入与键盘输入, 支持解析计算与标准计算, 并且具有一定的表达式 检错能力。Abstract :This work is made by java language from the resolution of amulti-function calculator. The program can be

3、 run on the NetBeans platform. This work supports common operations operator has inserted the function in brackets, support scientific notation input and keyboard input, support analytical calculation with the standard calculation, and the expression has a certain error detection capabilities.关键字 :自

4、解析; 计算器; Java作品总体性能介绍与使用说明基本介绍:该作品是基于 NetBeans 平台用 java 语言开发编写的一款界面友好的计算 器,核心思想是用两个栈计算中缀表达式值的经典算法。 与实际计算器基本保持 一致。基本功能 :1) 支持基本的四则( +、-、*、/ )运算。2) 支持 sin cos tan 等三角函数的运算。3) 支持 log 、ln 、exp、xy 、sqr 等复杂的运算。4) 实现了解析运算(可以输入一个数学表达式,然后正确计算出结果) 。5) 具有清零功能。6) 具有退格与记忆键。7) 支持圆周率一键输入。8) 支持科学计数法输入。9) 具有连续计算的能力,

5、 即上一次计算的结果可以直接参与下一次计算 (即 兼有标准计算器的特点) 。10) 输入可以通过界面实现, 即用鼠标点击按钮; 同时支持完全的键盘输入, 方便习惯使用键盘的用户。11) 具有一定得检错能力,能够检测出大部分常见的输入错误(包括键盘输 入时的输入错误)。12)能够显示当前的日期和时间。13)具有 2个菜单选项,通过“关于”菜单可以查看使用说明。14)具有三个快捷键( F1、F2、F3)。使用说明 :本计算器的使用方法如下:1、在“表达式”栏里输入要计算的表达式(输入方式为鼠标或键盘) ,然后 点击“ =”或按回车键即可在“结果”栏里边看到结果。2、“CE”可以把两栏里边的内容清零

6、, “ ”可以撤销上次输入, “M”自 动记忆上次计算的结果,点击此按钮等效于输入上次表达式的结果。3、若输入表达式有误,系统会提示出错信息。4、“关于”菜单里面有作者信息和使用手册, “编辑”菜单里面有“清零” 和“撤销”,作用等同于“ CE”和“ - ”。5、当用户不知道某个操作符的作用时,把鼠标放在该操作符上,过一会就 会系统就会自动提示该操作符的功能。例如,把鼠标放在“cos ”上,系统会提示“余弦”。6、日期栏里面显示当前的日期和时间,点击“编辑”菜单里面的“更新时 间”或用鼠标任意点击一个按钮( “=”除外),就可以刷新时间。7、输入的负数如果在表达式的中间,则要加括号8、支持完全

7、的键盘操作:快捷键“ F1”清零,快捷键“ F2”调出手册,“F3 调出作者信息”,回车相当于等号, “Backspace”作退格。软件设计概要概述典型的软件开发流程主要由可行性分析、需求分析、概要设计、详细设计、 编码、测试和维护等阶段构成。 本程序的开发周期采用的是演化模型: 首先实现 了一个可运行的初始版本, 即原型; 然后在此基础上不断增加新的功能, 得到功 能更强大的新版本;直到实现所有预期的功能。下面重点介绍概要设计中的 UML(统一建模语言)类图。UML 类图由图 1 的 UML类图可以看出,本系统主要由 11 个类(或接口)组成(不包 括字符串和其它一些简单的类) ;其中接口

8、ActionListoner (事件监听器)类、 KeyLisoner (按键监听器)类和 JFrame(窗口)类是 java 包自身提供的,本系 统只负责调用。其它 10 个类是本系统实现的。下面对图 1 作出简要说明。Main: 主类,负责整个计算器的顶层图形界面。Calculator: 负责计算器的界面和按钮的响应。它与主类 Main 存在 一对 一的关联关系;它是 JFrame 的子类,故两者之间是 泛化关系;在它的内部定义 了 ButtonListoner (事件监听器)类和 KeyLisoner (按键监听器)类,故它们 之间是 聚集 关系。ButtonListoner : 事件监

9、听器,作用是每当按下不同的按键时作出相应 的响应。它是接口 ActionListoner 的一个实现;它与类 Core存在一对多 的关联 关系。Enter :按键监听器,作用是按下回车键时作出相应的响应。它是接口 KeyListoner 的一个实现;它与类 Core 存在一对多的关联关系。Zuozhe: 用于显示作者信息的类。 与 ButtonListoner 类存在 一对多 的关联 关系。Help: 用于显示帮助信息的类。与 ButtonListoner 类存在 一对多 的关联 关系。Core:计算中缀表达式值的类, 也是整个系统的核心算法, 故取名“core ”。 它与 Stack 类、

10、Priority 类和 StrSwitch 类分别存在 一对二 、一对一和一对一 的关联关系。Stack :栈。在计算表达式值的过程中存放操作符和操作数。里面定义了栈 的各种常用操作。Priority :判断两个操作符优先级高低的类(附带有区分操作数和操作符 的功能)。StrSwitch :用于字符串转换和检测的类,将输入的字符转换成 sin 、 cos 等字符并且将字符和数字分开。图1系统的 UML 类图三、软件各模块详细设计该部分对各个类的功能和实现方法作出较详细的说明,其中重点类,也是最 核心的类是 Calculator 类和 Core 类。1、Main 类功能简介: 整个作品的顶层类,

11、负责生成计算器的界面,并设置界面大 小、位置、标题和可见性等。2、Calculator 类功能简介 :负责整个计算器界面的布局。实现方法:1、定义了一个容器 cp,其它所有的组件都放在容器内, cp 采用 null 布局, 即由作者自己决定每个组件的大小和位置,这样能使界面更加美观和友好。2、定义了 3 个单行文本区 displayField 、displayField1 和 displayField2 , 分别用来显示输入的表达式、计算结果和当前时间。3、定义了 2 个菜单( JMenu),它们是“关于”和“编辑”菜单,并定义了 一个 JMenuBar用来放置这两个菜单。“关于”里边有“作者

12、信息” 和“使用手册” 两个菜单项( JMenuItem);“编辑”里边有“撤销” 、“清零”和“刷新日期”两 个菜单项。4、定义了 31 个按钮 JButton31 ,用来实现各自的功能。 详细程序见源代码。3、Enter 类功能简介 :负责按下回车键和快捷键时时的响应。 本类是在类 Calculator 的内部定义的。实现方法是简单的 if else 语句:当按下回车键时,计算表达 式的值;按下快捷键“ F1”时,表达式和结果清零;按下快捷键“ F2”时,调出 用户手册;按下快捷键“ F3”时,调出作者信息。详细程序和注释见源代码。4、ButtonListoner 类功能简介 :负责按下不

13、同按键时的响应。本类是在类 Calculator 的内部定 义的,用来对每个按钮添加事件处理。在 ButtonListoner 类的内定义了按下每 个按钮时的相应操作。可以用图 2 的流程直观的说明。图 2 按键处理程序的流程图5、Zuozhe 类功能简介: 一个简单的图形用户界面,用来显示本计算器的作者信息。通 过点击菜单“关于”“作者信息”或按快捷键“ F3”可以弹出此窗口。6、Help 类功能简介:一个简单的图形用户界面, 用来显示本计算器的简要说明信息。 通过点击菜单“关于”“使用手册”或按快捷键“ F2”可以弹出此窗口。7、StrSwitch 类功能简介 :把输入的字符串转换成字符串

14、数组, 同时进行错误检测。 即把 用户输入表达式 (是一个字符串) 中的每个操作符或操作数区分出来, 输出一个 字符串数组(数组中每个元素存放一个操作符或操作数) ;并对输入表达式中的常见错误加以标记。 该部分的代码比较冗长, 大部分是机械的反复操作; 但为了 检测出更多的错误而又不得不要。该类中方法 public void SS(String strin) 的作用是对输入的字符串 进行转换;方法 public String Getstr(int i) 的作用是返回结果的第 i 个字符串(一个操作符或操作数) 。注意:在输出字符串的末尾加了一个“ #”,以便后面处理。本段代码考虑了几乎所有的输

15、入错误, 包括键盘上的各种无效字符; 并且经 过很多次测试,并没有发现未考虑到的输入错误(但这并不能100%肯定本计算器能检测出所有的输入错误) 。具体程序及注释见源代码。 其中,源代码的注释中有本计算器考虑到的各种 错误及相应的处理办法。8、Priority 类功能简介: 判断两个操作符优先级的高低。只定义了一个方法: publicString s1_super_s2(String str1,String str2) 。入口参数是两个操作符(也 可以是操作数)。当 str1 的优先级大于 str2 时,返回“ high ”; str1 的优先级小于 str2 时, 返回“ low ”;两者相

16、等时,返回“ equal ”;“#”对“ #”时,返回“ end”;是操 作数,返回“ isdigital ”;其他情况返回“ error ”。9、Stack 类public String GetTop ()(判断栈空)。功能简介: 具有一般栈的基本功能,即: public String Pop ()栈); public void Push(String str)(入栈);(返回栈顶元素); public boolean StackEmpty ()10 、Core 类功能简介: 计算中缀表达式的值算法描述: 本算法不采用把中缀表达式变换成后缀表达式,然后再计算后缀表达式值的算法;而是采用利用两

17、个栈(一个操作符栈,一个操作数栈)直 接计算中缀表达式值的算法。算法描述如下:(1)、初始化两个栈。一个是 optr ,存放运算符;一个是 opnd,存放操作 数或中间结果;(2)、置操作数栈为空, “#”入操作符栈;(3)、依次读入每个字符串( stri) ,若是操作数则进 opnd 栈,若是操作符,则和 optr 栈的栈顶元素比较优先权后执行相应操作,直到整个字符串读 取完毕(当前读入的元素和 optr 栈的栈顶元素均为“ #”)。上述算法可用下面的流程图直观的表示:按初始下一化个op按tr钮,opndOptr .Push (“#”); i=0;while (true)按下一个按 “hig

18、h ”Optr 钮.Pop ()操作符 optr .Gettop (i)?Stri其它low ”双目运算符?Noend”判断 Stri 操作数按(Os下trpt一ir)个.;Pu按i+s钮h+;equalYesBreak ; 按(下退一出 个wh按ile钮循erroroptr . 按Po下p一()个 i按+钮; 脱括号)O按p下nd一.个Pu按sh(运算钮结果)ReturnP(按个oo下按ppn(钮一d).;按个“下按er钮一ror图3Core 的算法流程图四、运行结果测试样本测试环境:华硕笔记本电脑, 主频 2.0GHz ,内存 1G,windows xp 操作系统, 安装了 java 虚拟

19、机(JDK) 和 NetBeans 集成开发环境;室温 5 摄氏度。测试人员:测试时间:2010 年 3月 4 日星期二测试图样:运行自解析计算器.jar 文件后出现如下界面:支持基本的四则( +、 -、* 、 /)运算。实现了解析运算(可以输入一个数学表达式,然后正确计算出结果)支持 sin cos tan 等三角函数的运算。四 支持 log、 ln 、 exp、 xy 、 sqr 等复杂的运算。五支持圆周率一键输入。六 支持科学计数法输入。七 具有一定得检错能力, 能够检测出大部分常见的输入错误 (包括键盘输入时的输入错误)八 能够显示当前的日期和时间。F1,九 具有 2 个菜单选项,通过

20、“关于”和“编辑”菜单可以查看使用说明,通过快捷键 F2,F3 可以选择所要的功能。&便用手册LJta本计算器的使用方法如下:仁在“表达式”栏月需入要计算的表达式(输入方式为竄标或键盘)然后 点击或按回车键即可在“结果”栏里边看到结果 2、“CE”可以把两栏里边的内容潘零可以撤梢上次输入.目动记忆上次计算的结果 ,点击此按钮等效于输入上次表达式的结果3若输入表达式有误 系统会提示岀诸信息4.“关于髦菜单里面有作者信息和使用手册,“编辑菜 单里面有“渚零”和竹散销,作用等同于“CE”和取 Back” .5.当用尸不知道某个操作符的作用时,把鼠标放在该操作符上,过一会就会系统就会自动捉示 该操作符

21、的功能.例如,把鼠标放在ttcosw系统 会提示“余弦” 6.日期栏里面显示当前的日期和时间-点击箕編辑菜单里面的“更新时间”或用鼠 床任意点击一个按钮(除外 八就可以刷新时间。人谕入的负数如果在表达式的中间 则要加括号 &支持完全的键盘操作:快捷键UF1 ”清零快 健键“F2”调岀手册,回车相当于等号,“Backspace -H/J 自解析计算看 关于编栢sinlog&自解析计算春关于編辑表达式:结果:0.010-3-4 下午3:五、源代码Main/顶层类package cal1;public class Mainpublic static void main(String args)Cal

22、culator cal = new Calculator();cal.setSize(360,520);/ 设置界面大小cal.setLocation(300,200); /设置界面位置 cal.setTitle( 自解析计算器 );cal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); cal.setVisible(true);Calculator/* 计算器界面和事件处理类*/ class Calculator extends JFrameprivate String str = ,;private int l,flag;private ch

23、ar aa;private int keyCode;Date today;DateFormat f1;String sss = new String ();private String btnTexts =sin,cos,tan,PI,(,),xy,E,log,ln,exp,sqr,7,8,9,4,5,6,1,2,3,=,0,.,+,-,*,/,CE,M,-;private JTextField displayField = new JTextField(); private JTextField displayField1 = new JTextField(); private JTextF

24、ield displayField2 = new JTextField(); private JLabel labe1 = new JLabel( 表达式 :); private JLabel labe2 = new JLabel( 结果: ); private JLabel labe3 = new JLabel( 日期: ); private JMenuBar bar = new JMenuBar(); private JMenu file = new JMenu( 关于 );private JMenuItem i1=new JMenuItem( 帮助 ); private JMenuIte

25、m i2=new JMenuItem( 作者信息 ); private JMenu edit = new JMenu( 编辑 );private JMenuItem k1=new JMenuItem( 清零 ); private JMenuItem k2=new JMenuItem( 撤销 ); private JMenuItem k3=new JMenuItem( 刷新时间 ); Color myColor1=new Color(255,255,255);Color myColor2=new Color(0,0,0);Color myColor3=new Color(0,160,255);

26、Color myColor4=new Color(0,255,0);Color myColor5=new Color(128,255,0); Color myColor6=new Color(160,255,255);public Calculator ()/布局Container cp= this.getContentPane(); cp.setLayout(null); cp.setBackground(myColor6);file.add(i1);/ 手册和作者信息file.add(i2);i1.setBackground(myColor6);i2.setBackground(myCol

27、or6);bar.add(file);file.setToolTipText( 显示作者信息和使用手册 ); cp.add(bar);bar.setBounds(0, 0, 690, 23);k1.setBackground(myColor6);k2.setBackground(myColor6);k3.setBackground(myColor6);edit.add(k1);edit.add(k2);edit.add(k3);bar.add(edit); edit.setToolTipText( 撤销、清零、刷新时间 );cp.add(labe1);labe1.setBounds(5, 30

28、, 50,50); labe1.setForeground(Color.RED); labe1.setToolTipText( 显示输入的表达式 ); cp.add(displayField);displayField.setBounds(47, 40, 280,30); displayField.setText(0.0);cp.add(labe2);labe2.setBounds(5, 70, 50,50); labe2.setForeground(Color.RED); labe2.setToolTipText( 显示结果 ); cp.add(displayField1);displayF

29、ield1.setBounds(47, 80, 150,30); displayField1.setText(0.0);cp.add(displayField2); displayField2.setBounds(210, 80, 120,30); today = new Date();f1 = DateFormat.getInstance();sss = f1.format(today);displayField2.setText(sss);JButton button; button = new JButton31;for(int i=0;i31;i+)buttoni=new JButto

30、n(btnTextsi); /buttoni.setBackground(Color.PINK);cp.add(button0);button0.setBounds(10, 130, 70, 30);button0.setToolTipText( 正弦 );cp.add(button1);button1.setBounds(95, 130, 70, 30); button1.setToolTipText( 余弦 );cp.add(button2);button2.setBounds(190, 130, 70, 30); button2.setToolTipText( 正切 );cp.add(b

31、utton3);button3.setBounds(275, 130, 70, 30);button3.setToolTipText( 圆周率 );cp.add(button4);button4.setBounds(10, 180, 70, 30);cp.add(button5);button5.setBounds(95, 180, 70, 30);cp.add(button6);button6.setBounds(190, 180, 70, 30); button6.setToolTipText(x 的 y 次方 ); cp.add(button7);button7.setBounds(27

32、5, 180, 70, 30); button7.setToolTipText( 科学计数法输入 );cp.add(button8);button8.setBounds(10, 230, 70, 30); button8.setToolTipText( 以 10 为底的对数 ); cp.add(button9);button9.setBounds(95, 230, 70, 30); button9.setToolTipText( 自然对数 ); cp.add(button10);button10.setBounds(190, 230, 70, 30); button10.setToolTipT

33、ext( 以 e 为底的指数 ); cp.add(button11);button11.setBounds(275, 230, 70, 30); button11.setToolTipText( 开平方 );cp.add(button12); button12.setBounds(10, 280, 50, 30); cp.add(button13);button13.setBounds(75, 280, 50, 30); cp.add(button14);button14.setBounds(140, 280, 50, 30);cp.add(button15); button15.setBou

34、nds(10, 330, 50, 30);cp.add(button16); button16.setBounds(75, 330, 50, 30);cp.add(button17); button17.setBounds(140, 330, 50, 30);cp.add(button18); button18.setBounds(10, 380, 50, 30);cp.add(button19); button19.setBounds(75, 380, 50, 30);cp.add(button20); button20.setBounds(140, 380, 50, 30);cp.add(

35、button30); button30.setBounds(10, 430, 50, 30); button30.setToolTipText( 撤销上次输入 );cp.add(button22); button22.setBounds(75, 430, 50, 30);cp.add(button23); button23.setBounds(140, 430, 50, 30);cp.add(button24); button24.setBounds(220, 280, 55, 30);cp.add(button25); button25.setBounds(220, 330, 55, 30)

36、;cp.add(button26); button26.setBounds(220, 380, 55, 30);cp.add(button27); button27.setBounds(220, 430, 55, 30);cp.add(button28); button28.setBounds(290, 280, 55, 30); button28.setToolTipText( 清零 );cp.add(button29); button29.setBounds(290, 330, 55, 30);button29.setToolTipText( 自动记忆上次计算的结果 );cp.add(bu

37、tton21);button21.setBounds(290, 380, 55, 80);class ButtonLisoner implements ActionListener / 事件处理public void actionPerformed(ActionEvent e) Core a = new Core(); for(int i=0;i=12&i=20|i=22)/ 是数字 str0=str2;str2=;else str2=;str0=;if(i=0|i=8&i=11)/ 解决 cos 等运算符的连续计算问if(!str0.equals()aa = str0.charAt(str0

38、.length()-1);if(!(aa=+|aa=-|aa=*|aa=/|aa=()str0=btnTextsi+(+str0+); flag=1;elsestr0 =str0+ btnTextsi + (;flag=1;/cos 等运算符后面加括号else str0 = btnTextsi + (;flag=1;if(flag=0) str0=str0+btnTextsi;/ 添加当前输入到 str0 else flag=0;displayField.setText(str0);/ 显示当前输入if(e.getActionCommand().equals(=)/ 按下等号str0=disp

39、layField.getText();str2=a.core(str0); /调用 Core 类,计算表达式的值 if(str2.equals(error)/ 输入的表达式有误,出错处理displayField1.setText(error!);JOptionPane.showMessageDialog(null, Input Error!); str2=;else/ 无错误,显示str3= str2;/ 记忆上次结果; if(Double.valueOf(str3)|e.getActionCommand().equals( 撤销 ) / 按下退格按钮 的相应处理today = new Dat

40、e();f1 = DateFormat.getInstance();sss = f1.format(today);/ 刷新时间displayField2.setText(sss);str2=;if(!str0.equals()l=str0.length();if(l=3)if(l=3&(str0.charAt(l-1)=n&str0.charAt(l-2)=i&str0.charAt(l-3)=s)| (str0.charAt(l-1)=s&str0.charAt(l-2)=o&str0.charAt(l-3)=c)|(str0.charAt(l-1)=n&str0.charAt(l-2)=a

41、&str0.charAt(l-3)=t)|(str0.charAt(l-1)=p&str0.charAt(l-2)=x&str0.charAt(l-3)=e)|(str0.charAt(l-1)=g&str0.charAt(l-2)=o&str0.charAt(l-3)=l)|(str0.charAt(l-1)=y&str0.charAt(l-2)=&str0.charAt(l-3)=x)|(str0.charAt(l-1)=r&str0.charAt(l-2)=q&str0.charAt(l-3)=s) str0=str0.substring(0,l-3); displayField.set

42、Text(str0); l=0;if(l=2&(str0.charAt(l-1)=n&str0.charAt(l-2)=l)|(str0.charAt(l-1)=I&str0.charAt(l-2)=P)str0=str0.substring(0,l-2); displayField.setText(str0);l=0;if(l!=0)str0=str0.substring(0,l-1); displayField.setText(str0);if(str0.equals() displayField.setText(0.0);else if(e.getActionCommand().equa

43、ls(CE)|e.getActionCommand().equals( 清零 )/ 按下清零按钮 时的相应处理today = new Date();f1 = DateFormat.getInstance();sss = f1.format(today);/ 刷新时间displayField2.setText(sss);str0 = ;str2=;displayField.setText(0.0);displayField1.setText(0.0);else if(e.getActionCommand().equals(M)/ 按下记忆钮时的相应处理 today = new Date();f1

44、 = DateFormat.getInstance();sss = f1.format(today);/ 刷新时间displayField2.setText(sss);str0=str0+str3;/ 添加上一次计算结果到 str0 displayField.setText(str0);/ 显示当前输入else if(e.getActionCommand().equals( 作者信息 )Zuozhe cal = new Zuozhe();cal.setSize(230,218);/ 设置界面大小cal.setLocation(100, 200); / 设置界面位置 cal.setTitle(

45、作者信息 );cal.setVisible(true);else if(e.getActionCommand().equals( 帮助 )Help cal = new Help();cal.setSize(300,520);/ 设置界面大小cal.setLocation(2, 200); /设置界面位置 cal.setTitle( 使用手册 );cal.setVisible(true);else if(e.getActionCommand().equals( 刷新时间 )today = new Date();f1 = DateFormat.getInstance();sss = f1.form

46、at(today);/ 刷新时间displayField2.setText(sss);class Enter implements KeyListener/ 按下回车键相当于等号public void keyReleased(KeyEvent event) int mm=0;public void keyTyped(KeyEvent event) int nn=0;public void keyPressed(KeyEvent event)Core a = new Core();keyCode = event.getKeyCode();if(keyCode = KeyEvent.VK_ENTE

47、R)str0=displayField.getText();str2=a.core(str0); / 调用 Core 类,计算表达式的值 if(str2.equals(error)/ 输入的表达式有误,出错处理displayField1.setText(error!);JOptionPane.showMessageDialog(null, Input Error!); str2=;else/ 无错误,显示str3= str2;/ 记忆上次结果; if(Double.valueOf(str3)0) str3=(+str3+);displayField1.setText(str2);else if

48、(keyCode = KeyEvent.VK_F1)/ 快捷键 F1 键清零str0 = ;str2=;displayField.setText(); displayField1.setText(0.0);else if(keyCode = KeyEvent.VK_F2)/ 快捷键 F2 ,调出使用手册Help cal = new Help();cal.setSize(300,700);/设置界面大小cal.setLocation(2, 20); /设置界面位置 cal.setTitle( 使用手册 );cal.setVisible(true);else if(keyCode = KeyEve

49、nt.VK_F3)/ 快捷键 F3 ,调出作者信息 Zuozhe cal = new Zuozhe();cal.setSize(230,218); / 设置界面大小 cal.setLocation(1000, 200); / 设置界面位置 cal.setTitle( 作者信息 );cal.setVisible(true);Enter you = new Enter();/为文本框添加按键跟踪器displayField.addKeyListener(you);displayField1.addKeyListener(you);ButtonLisoner my = new ButtonLisone

50、r (); / 为按钮添加事件跟踪器for(int k=0;k31;k+) buttonk.addActionListener(my);i1.addActionListener(my);i2.addActionListener(my);k1.addActionListener(my);k2.addActionListener(my);k3.addActionListener(my);Core/*计算中缀表达式值的核心算法 ;*/package cal1;public class Corepublic String core(String args)Stack optr = new Stack(); / 操作符栈Stack opnd = new Stack();/ 操作数栈StrSwitch strswitch = new StrSwitch();strswitch.INI();strswitch.SS(args);Priority priority = new P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论