• 大小: 16KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: Java
  • 标签: 编译原理  计算器  

资源简介

用编译原理知识编写的计算器,用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


评论

共有 条评论