资源简介
用编译原理知识编写的计算器,用Java语言实现。
本资源包括源代码和课程设计的报告。
代码片段和文件信息
package joe;
import java.io.*;
import java.util.*;
public class Calculator
{
public static void main(String[] args)
{
Calculator ca=new Calculator();
ArrayList alStr=new ArrayList();//存放每一行数据
ArrayList alNum=new ArrayList();
String patternL=“[A-Z]“; //是否是大写字符
String patternN1=“[\\+\\-]?[1-9][0-9]*([\\.][0-9]+)?“; //正常数值
String patternN2=“[\\+\\-]?[\\.]?[1-9][0-9]*“; //缺少整数部分的小数
float[] array=new float[26]; //存放26个大写字母代表的值
float result=0;
try
{
FileReader input=new FileReader(“in.txt“);
BufferedReader br=new BufferedReader(input);
String s=br.readLine();
while(s!=null)
{
StringBuffer temp=new StringBuffer();
temp=temp.append(s);
alStr.add(temp.toString());
s=br.readLine();
}
for(int i=0;i {
int counter=0;
ArrayList al=ca.analyseString(alStr.get(i));
// 解析每一个字符串
for(int j=0;j {
if(al.get(j).toString().matches(patternN1))
{//是否是正常数值
alNum.add(counterca.toNumber(al.get(j).toString()));
counter++;
}
else if(al.get(j).toString().matches(patternN2))
{ //是否是缺整数部分的小数
al.set(jca.insertZero(al.get(j).toString()));
alNum.add(counterca.toNumber(al.get(j).toString()));
counter++;
}else if(al.get(j).toString().matches(patternL))
{ //是否是大写字符
char c=ca.toChar(al.get(j).toString());
int n=(int)c-65;
if(j {
array[n]=alNum.get(0);
}else
{
alNum.add(counterarray[n]);
counter++;
}
}
else if(al.get(j).equals(“+“))
{
if(alNum.size()>1)
{
Float temp=alNum.get(counter-2)+alNum.get(counter-1);
counter=counter-2;
alNum.set(countertemp);
}
counter++;
}
else if(al.get(j).equals(“-“))
{
if(alNum.size()>1)
{
Float temp=alNum.get(counter-2)-alNum.get(counter-1);
counter=counter-2;
alNum.set(countertemp);
}
counter++;
}
else if(al.get(j).equals(“*“))
{
if(alNum.size()>1)
{
Float temp=alNum.get(counter-2)*alNum.get(counter-1);
counter=counter-2;
alNum.set(countertemp);
}
counter++;
}
else if(al.get(j).equals(“/“))
{
if(alNum.size()>1)
{
Float temp=alNum.get(counter-2)/alNum.get(counter-1);
counter=counter-2;
alNum.set(countertemp);
}
counter++;
}
else if(al.get(j).equals(“%“))
{
if(alNum.size()>1)
{
Float temp=alNum.get(counter-2)%alNum.get(counter-1);
counter=counter-2;
alNum.set(countertemp);
}
counter++;
}else if(al.get(j).equals(“sin“))
{
if(alNum.size()>0)
{
Float temp=(float)Math.sin((double)a
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6057 2010-01-01 16:01 Calculator.java
文件 63488 2010-01-01 16:01 编译原理课程设计报告06计1周娥200601030105.doc
文件 59 2009-12-31 16:41 in.txt
----------- --------- ---------- ----- ----
69604 3
- 上一篇:android 蓝牙SPP传输demo
- 下一篇:外文文献及翻译《JSP应用框架》
相关资源
- 软件工程课程设计,教务考试系统
- Java骑士游历课程设计
- 用Java实现的宾馆客房管理系统包含课
- android 计算器源代码 含算法
- Android课程设计206208
- Java教学管理系统课程设计报告+源码
- 用java实现的简易型科学计算器
- 英汉小字典Java课程设计
- 运动会成绩管理系统,java课程设计源
- Java课程设计报告书、复杂计算器的设
- Java课程设计(万年历)201470
- 医院管理系统源码 数据库课程设计
- 猜数字 JAVA课程设计报告
- java课程设计赛车项目
- 打地鼠小游戏 java课程设计
- JAVA课程设计--计算器(含文档等
- JAVA计算器小程序多进制计算、转换
- java+SQL人事管理系统
- j2ee《网上书城》系统设计报告
- JAVA课设迷你计算器设计
- Java火车票查询系统课程设计
- 基于struts2+spring+hibernate的JavaEE课设
- java课程设计---迷宫问题详解
- Android简易计算器
- 课程设计 日历记事本 java
- java编写的计算器实验报告
- java课程设计加密解密
- java使用后缀表达式实现计算器
- java课程设计实验报告
- java数学表达式计算程序设计报告
评论
共有 条评论