我正在用Processing编写一个转换复数的程序。但是,我想拥有一种使用输入字符串并使用复杂变量计算转换的方法。例如:
1/(z+1)
(z^2)/(z/2)
其中z是复数。现在,我研究了JEP和一些examples,但是我无法确定它是否允许您实际输入z作为变量(无论如何也不是免费的)。是否可以使用Java的表达式解析器(可以在处理过程中使用旧版本的Java,并且没有泛型)进行处理?
如果没有,有人可以指出我如何创建一个基础吗?
最佳答案
如PhiLo所述,您可以使用泛型。尝试以下处理草图:
import java.util.*;
java.util.List<String> list = Arrays.asList("a", "b", "c");
textFont(loadFont("UMingCN-30.vlw"));
for(int i = 0; i < list.size(); i++) {
text(list.get(i), 5, int(i*30)+30);
}
并且有一个非商业版本的JEP(GPL)。将其下载here并将其添加到您的Processing类路径(导入)。
成功执行此操作后,您可以使用JEP,如下所示:
void setup() {
org.nfunk.jep.JEP parser = new org.nfunk.jep.JEP();
parser.addComplex();
try {
parser.parseExpression("(1+2*i) + (3+8*i)");
println(parser.getComplexValue());
} catch(Exception e) {
e.printStackTrace();
}
}
产生(预期的)输出:(4.0,10.0)