Java版Eval

Java标准库中没有内置的eval函数,但通过自定义代码可以实现类似功能。本文分享了一个简单的Java Eval实现,用于计算表达式结果。返回值为String类型,支持判断结果是否为double。注意不直接支持负数,需要转换成(0 - n)形式。欢迎指出可能存在的问题。
摘要由CSDN通过智能技术生成

用过别的语言中的Eval函数知道它很eval但确实好用,不过Java标准包里并没有提供eval方法。在昨天写程序时用到这个功能,就顺手写了一下,当然有参考网上别人的版本,在此一并谢过。其它不多说了,直接上代码。

package com.winson.calc;

import java.util.ArrayList;
import java.util.Stack;

public class WinsonEval {

	private final static String ERR_NOT_END_VALID = "The last character of your expression MUST be '#'!";
	private final static String ERR_PARENTHESE_NOT_PAIR = "'(' & ')' should be used in pair!";
	private final static String ERR_CHAR_NOT_SUPPORT = "Not supported character";
	private final static String ERR_OPERATION_NOT_SUPPORTED = "Not supported operation";
	private final static String ERR_OPERATOR_NOT_VALID = " doesn't support double data!";
	private final static String ERR_UNKNOWN = "An unknown error!";
	
	private static boolean flag_double;

	/*
	 * expression must be end with #
	 */
	public static String eval(String expression) {

		ArrayList<String> list;
		try {
			list = toSuffixSequence(expression);
			return calculate(list);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public static boolean isResultDouble(){
		return flag_double;
	}

	private static String calcul
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值