最近學習了一下Java語言,用它寫了個小計算器。當然,功能還很簡單,感興趣的朋友可以自己看看,或者交流。程序
有三部分組成:
首先主程序calculate.java傳入字符串(如“2+8*6-5=”),代碼如下:
import calculatelib.expression;
import calculatelib.calculator;
public class calculate
{
public static void main(String[] args)
{
expression exp=new expression(args[0]);
calculator compute=new calculator();
int i=0;
while(exp.data[i]!=null)
{
compute.data[i]=Integer.parseInt(exp.data[i]);
i++;
}
i=1;
while(exp.calcus[i]!='=')
{
compute.opt[i]=exp.calcus[i];
i++;
}
compute.setbounds(exp.getdatalength(),exp.getcalcuslength());
System.out.println("the answer of your expression:");
System.out.print(args[0]);
System.out.println(compute.calculate());
}
}
然後由通過對象調用expression中的方法完成最字符串的編輯:
package calculatelib;
public class expression
{
public String data[]=new String[50];
public char calcus[]=new char[50];
int i=0,r=0,tmp=0;
int cr=1,estop=0;
public expression(String args)
{
String s=args;
int sstop=s.length();
char ch[]=s.toCharArray();
int cstop=ch.length;
while(i<sstop)
{
if(Character.isDigit(s.charAt(i)))
{
i++;
continue;
}
data[r]=s.substring(tmp,i);
i++;
tmp=i;
r++;
}
i=0;
while(i<cstop)
{
if(!Character.isDigit(ch[i]))
{
calcus[cr]=ch[i];
if(calcus[cr]=='-')
{
data[cr]='-'+data[cr];
calcus[cr]='+';
}
cr++;
}
i++;
}
}
public int getdatalength()
{return r;}
public int getcalcuslength()
{return cr-2;}
}
形成操作數數組data[]和操作符數組calcus[]。然後由calculater類中的方法計算數組,並返回結果。源碼如下:
package calculatelib;
public class calculator
{
public float[] data=new float[50];
public char[] opt=new char[50];
int cstop=0,dstop=0;
int i=0;
public float calculate()
{
for(i=1;i<cstop;i++)
{
if((opt[i]=='*')||(opt[i]=='/'))
{
switch(opt[i])
{
case'*':
{
data[i]=data[i-1]*data[i];
data[i-1]=0;
continue;
}
case'/':
{
data[i]=data[i-1]/data[i];
data[i-1]=0;
continue;
}
}
}
}
for(i=0;i<dstop;i++)
data[i+1]=data[i]+data[i+1];
return data[i];
}
public void setbounds(int d,int c)
{
cstop=c+1;
dstop=d;
}
}
有興趣的朋友可以參考一下。