我正在用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)

10-04 20:38