資源簡介
用編譯原理知識編寫的計算器,用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應用框架》
評論
共有 條評論