当前位置:   article > 正文

java实现计算器_基于java用户界面设计swing,采用jframe框架作为计算器的主窗口

基于java用户界面设计swing,采用jframe框架作为计算器的主窗口

项目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 (;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/275748
推荐阅读
相关标签