计算器(java)

最近学习了一下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;
	}
}

有兴趣的朋友可以参考一下。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值