2015-04-12 6 views
-1

Я программирую сервер на java, и мне нужно использовать математику с помощью JUEL.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" и распечатать результат на conlsole.

Может быть, я использую 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

«не работает» довольно беден описание проблемы - что именно делает не работа? – home

+0

После получения этого метода сокет закрывается. – Lemmy

+0

Сокет не отображается в коде, который вы опубликовали. Пожалуйста, покажите больше кода ... – home

ответ

0

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

SimpleContext context = new SimpleContext(); 

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

ExpressionFactory factory = new ExpressionFactoryImpl(); 

JUEL Api

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

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

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

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

Смежные вопросы