您的位置:首页 > 其它

表达式的化简

2017-10-24 01:29 106 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: