decimaltoken.java

来自「Java编写的表达式计算器, 即可以像我们书写表达式那样直接输入计算表达式, 程」· Java 代码 · 共 138 行

JAVA
138
字号
package parser;


/**
 * 这个类用于综合整数,小数,指数部分形成一个数值类型的对象
 * @author zouhao
 */
public class DecimalToken extends Token{
	Integral i;
	Fraction f;
	Exponent e;
	double r;
        /**
         * 构造函数
         * @param ti 整数部分
         * @param tf 小数部分
         * @param te 指数部分
         */
	DecimalToken(Integral ti,Fraction tf,Exponent te)
	{
		type = "Decimal";
		i = new Integral(ti);
		f = new Fraction(tf);
		e = new Exponent(te);
		r = getValue();
	}
        /**
         * 构造函数
         * @param ti 整数部分
         */
	DecimalToken(Integral ti)
	{
		type = "Decimal";
		i = new Integral(ti);
		f = null;
		e = null;
		r = getValue();
	}
        /**
         * 构造函数
         * @param ti 整数部分
         * @param tf 小数部分
         */
	DecimalToken(Integral ti,Fraction tf)
	{
		type = "Decimal";
		i = new Integral(ti);
		f = new Fraction(tf);
		e = null;
		r = getValue();
	}
        /**
         * 构造函数
         * @param ti 整数部分
         * @param te 指数部分
         */
        DecimalToken(Integral ti,Exponent tf)
	{
		type = "Decimal";
		i = new Integral(ti);
		e = new Exponent(tf);
		f = null;
		r = getValue();
	}
        /**
         * 构造函数
         * @param t 直接用一个值初始化
         */
	DecimalToken(double t)
	{
		type = "Decimal";
		i = null;
		f = null;
		e = null;
		r = t;
	}
        /**
         * 获得此数值对象的值
         * @return 返回对象的值
         */
        public double getResult()
        {
            return r;
        }
        /**
         * 用于返回对象的值
         * @return 将值作为字符串类型返回
         */
        public String getToken()
        {
            return toString();
        }
        /**
         * 用于返回对象的值
         * @return 将值作为double类型返回
         */
	public double getValue()
	{
		if(f == null && e == null && i!=null)
		{
			r += i.getValue();
		}
		else if(f == null && i!=null && e != null)
		{
			r += i.getValue();
			if(e.isPositive())
				r *= e.getValue();
			else if(!e.isPositive())
				r /= e.getValue();
		}
                else if(e == null && i!=null && f != null)
                {
                        r += i.getValue() + f.getValue();
                }
		else if(i!=null && e != null && f!= null)
		{
			r += i.getValue() + f.getValue();
			if(e.isPositive())
				r *= e.getValue();
			else if(!e.isPositive())
				r /= e.getValue();
		}
		return r;
	}
	public String toString()
	{
		if(f == null && e == null)
		{
			return ""+i;
		}
		else if(e == null)
		{
			return ""+i+f;
		}
		return ""+i+f+e;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?