表达式的化简

package util;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

public class Test {

	public static void main(String[] args) throws IOException {
		Properties props = new OrderedProperties();
		FileInputStream fileInputStream = new FileInputStream("input.properties");
		props.load(fileInputStream);
		// 用于存储所有节点:结束节点为GX=即:将值使用等号分割后length=1
		Map<String, String> map = new HashMap<String, String>();
		for (Object key : props.keySet()) {
			map.put(key.toString(), props.getProperty(key.toString()));
		}
		for (Object key : props.keySet()) {
			if (props.getProperty(key.toString()).split("=").length > 1) {
				String newstr = th(map, props.getProperty(key.toString()).split("=")[1]);
				System.out.println(newstr);
			}

		}
	}

	public static String th(Map<String, String> map, String dd) {
		String[] arrayStr = dd.split("\\+|\\(|\\)|\\*|/|\\-");
		// 去除数组中为空的字符串
		List<String> tmp = new ArrayList<String>();
		for (String str : arrayStr) {
			if (str != null && str.startsWith("G")) {
				tmp.add(str);
			}
		}
		arrayStr = tmp.toArray(new String[0]);
		for (String str : arrayStr) {
			String newstr = str;
			if (map.get(newstr).split("=").length > 1) {
				dd = dd.replaceAll(newstr, "(" + map.get(newstr).split("=")[1] + ")");
				dd = th(map, dd);
			}
		}
		return dd;
	}
}



package util;

import java.util.Collections;
import java.util.Enumeration;
import java.util.LinkedHashSet;
import java.util.Properties;
import java.util.Set;

public class OrderedProperties extends Properties {

	/**
	 * 
	 */
	private static final long			serialVersionUID	= 1L;
	private final LinkedHashSet<Object>	keys				= new LinkedHashSet<Object>();

	public Enumeration<Object> keys() {
		return Collections.<Object> enumeration(keys);
	}

	public Object put(Object key, Object value) {
		keys.add(key);
		return super.put(key, value);
	}

	public Set<Object> keySet() {
		return keys;
	}

	public Set<String> stringPropertyNames() {
		Set<String> set = new LinkedHashSet<String>();

		for (Object key : this.keys) {
			set.add((String) key);
		}

		return set;
	}
}
G1:G1=
G2:G2=
G3:G3=
G4:G4=
G5:G5=G1+G3
G6:G6=G4+G5*G5-G4
G7:G7=G2+G6
G8:G8=G7+G3
G9:G9=G5+G8
G10:G10=G9+G8-G7



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值