JUEL数学
JUEL mathematics
我在 java 上编程服务器,我需要在 JUEL 的帮助下使用数学。
例如2*2+2,它会打印出结果6。
问题是,它不起作用。
这是一个数学方法:
public static void Math(String operation){
ValueExpression expr = f.createValueExpression(cont, "${" + operation + "}", Object.class);
out.print(expr);
}
因此,我将一个操作作为字符串“8+5+4”并在控制台上打印出结果。
可能是我用错了JUEL?
try{
while ((newLine = in.readLine()) != null) {
try {
Pattern patternMath = Pattern.compile("<MATH>(\s*?)(\d+)(\s*?)([-+/\*])(\s*?)(\d+)");
Matcher matcher = patternMath.matcher(newLine);
Pattern pattCSEN = Pattern.compile("<RU-EN>(.*)");
Matcher matCSEN = pattCSEN.matcher(newLine);
Pattern pattENCS = Pattern.compile("<EN-RU>(.*)");
Matcher matENCS = pattENCS.matcher(newLine);
if (matENCS.find()) {out.println("<TRANSLATION> " + ENGtoCZ(matENCS.group(1)));}
else if (matCSEN.find()) {out.println("<TRANSLATION> " + CZtoENG(matCSEN.group(1)));}
else if (newLine.equals("<BYE>")) {
clientSocket.close();
}
else if (matcher.find()) {
Math(newLine);
} else {
out.println("<FAIL>");
clientSocket.close();
}
}catch(Exception ex){
clientSocket.close();;
}}
} catch (Exception e) {
out.println("<FAIL>");
clientSocket.close();
}
}
以下几行始终确保您的代码中有。
确保你的上下文设置如下:
SimpleContext context = new SimpleContext();
您的表达式对象应该是已实现的 class,类似于以下内容:
ExpressionFactory factory = new ExpressionFactoryImpl();
其次将你的ValueExpression放在一个try块中,万一出现问题,你会从捕获的异常中知道问题所在。
检查如何使用 System.out
输入表达式,如:
Object display = expr.getValue(context);
System.out.println("> " + display);
Some additional reference is Here
我在 java 上编程服务器,我需要在 JUEL 的帮助下使用数学。
例如2*2+2,它会打印出结果6。 问题是,它不起作用。
这是一个数学方法:
public static void Math(String operation){
ValueExpression expr = f.createValueExpression(cont, "${" + operation + "}", Object.class);
out.print(expr);
}
因此,我将一个操作作为字符串“8+5+4”并在控制台上打印出结果。
可能是我用错了JUEL?
try{
while ((newLine = in.readLine()) != null) {
try {
Pattern patternMath = Pattern.compile("<MATH>(\s*?)(\d+)(\s*?)([-+/\*])(\s*?)(\d+)");
Matcher matcher = patternMath.matcher(newLine);
Pattern pattCSEN = Pattern.compile("<RU-EN>(.*)");
Matcher matCSEN = pattCSEN.matcher(newLine);
Pattern pattENCS = Pattern.compile("<EN-RU>(.*)");
Matcher matENCS = pattENCS.matcher(newLine);
if (matENCS.find()) {out.println("<TRANSLATION> " + ENGtoCZ(matENCS.group(1)));}
else if (matCSEN.find()) {out.println("<TRANSLATION> " + CZtoENG(matCSEN.group(1)));}
else if (newLine.equals("<BYE>")) {
clientSocket.close();
}
else if (matcher.find()) {
Math(newLine);
} else {
out.println("<FAIL>");
clientSocket.close();
}
}catch(Exception ex){
clientSocket.close();;
}}
} catch (Exception e) {
out.println("<FAIL>");
clientSocket.close();
}
}
以下几行始终确保您的代码中有。 确保你的上下文设置如下:
SimpleContext context = new SimpleContext();
您的表达式对象应该是已实现的 class,类似于以下内容:
ExpressionFactory factory = new ExpressionFactoryImpl();
其次将你的ValueExpression放在一个try块中,万一出现问题,你会从捕获的异常中知道问题所在。
检查如何使用 System.out
输入表达式,如:
Object display = expr.getValue(context);
System.out.println("> " + display);
Some additional reference is Here