赞
踩
项目1:简单计算器的实现
1、项目概述
本实验主要是Java图形用户界面的编写,重点讲述利用java语言实现一个简单计算器。开发环境用的是idea。
1.1项目目标和主要内容
(1)能通过设计的按钮控件输入并实现简单算术运算,要求表达式在编辑框中显示,能将运算结果,输出在编辑框内显示;
(2)能够实现混合运算的求解,算术表达式中包括加、减、乘、除、括号等运算符;并且能够识别括号,优先级正确。
(3)并保存历史的表达式运算记录。
1.2项目的主要功能
实现基本的加,减,乘,除,四则运算
最终图形界面:
2、项目设计
2.1项目总体框架
设计思想:
要实现完整计算式的输入并运算,就得用到计算后缀表达式的算法,和将中缀表达式转换为后缀表达式的算法。
2.2系统详细设计
层次关系:
2.3关键算法分析
算法1:中缀表达式转后缀表达式
【1】算法功能
计算式要在计算器的文本编辑框中显示,因此计算式用字符串记录。
【2】算法基本思想
规则:从左向右遍历中缀表达式
①:遇到数字字符,直接加入后缀表达式
②:遇到高优先级运算符,若栈为空直接入栈,若栈不为空,则将当前运算符与栈顶元素比较。
比较1(栈顶元素也为高优先级运算符):栈顶元素出栈加入后缀表达式,当前运算符入栈。这样的操作使得栈中不会出现连续的高优先级运算符。
比较2(栈顶元素为’('左括号):将当前元素入栈。
比较3(栈顶元素为低优先级运算符):将当前元素入栈。
③:遇到’(‘左括号,将左括号入栈。
④:遇到’)'右括号,将栈顶元素顺序出栈,直到栈顶元素为左括号,此时删去栈顶的左括号。
⑤:遇到低优先级运算符,若栈为空直接入栈,若栈不为空,则将当前运算符与栈顶元素比较。
【3】 代码逻辑(可用伪代码描述)
中缀表达式转后缀表达式(算法1)
indexof():String.indexof()方法搜索在该字符串上是否出现了作为参数传递的字符串,若找到字符串,则返回字符串首字母的位置(0代表第一个位置),在下面的代码段中,为了判断字符类型用到了该方法。
String.valueof():将double类型的浮点数转换为字符串
Double.parseDouble():将字符串转化为double类型的浮点数
代码块:
//中缀表达式转后缀表达式
private String[] yunsuan(String str)
{
String s="";
char a[]=new char[100];
String jieguo[]=new String[100];
int top=-1,j=0;
for (int i=0;i<str.length();i++)
{
if (“0123456789.”.indexOf(str.charAt(i))>=0)
{
s="";
for (;i<str.length()&&“0123456789.”.indexOf(str.charAt(i))>=0;i++)
{
s=s+str.charAt(i);
}
i–;
jieguo[j]=s;
j++;
}
else if ("(".indexOf(str.charAt(i))>=0)
{
top++;
a[top]=str.charAt(i);
}
else if (")".indexOf(str.charAt(i))>=0)
{
for (;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。