JUEL математика

Я программирую сервер на 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();
            }
        }

1 ответ

Решение

Вот следующие строки, чтобы всегда быть уверенными в том, что они есть в вашем коде. Убедитесь, что у вас есть контекст, настроенный примерно так:

SimpleContext context = new SimpleContext();

Ваш объект выражения должен иметь класс реализуемый, что-то вроде следующего:

ExpressionFactory factory = new ExpressionFactoryImpl();

JUEL Api

Во-вторых, поместите ваше ValueExpression в блок try, в случае, если что-то пойдет не так, вы узнаете проблему из перехваченного исключения.

Проверьте, как выражение вводится с System.out как в:

Object display = expr.getValue(context);
System.out.println("> " + display);

Некоторая дополнительная ссылка здесь

Другие вопросы по тегам