2013-05-07 4 views
1

내 프로그램은 String 입력을 받아서 ScriptEngine 가져 오기에서 engine.eval()을 사용하여 계산합니다. 평가 된 값을 int 유형으로 변환하려면 어떻게해야합니까?Object를 engine.eval에서 int로 변환하는 방법

import javax.script.ScriptEngine; 
import javax.script.ScriptEngineManager; 
import javax.script.ScriptException; 

public class Main { 

public static void main(String[] args) { 

    String s = "206 + 4"; 
    Object eval; 

    ScriptEngineManager mgr = new ScriptEngineManager(); 
    ScriptEngine eng = mgr.getEngineByName("JavaScript"); 

    try { 
     eval = eng.eval(s); 
    } catch (ScriptException e) { 
     System.out.println("Error evaluating input string."); 
    } 

//Convert Object eval to int sum 
} 
} 

답변

1

당신은이 BigDecimal로 변환 한 다음에서 intValue()를 얻을 수 있습니다. intValue()이 결과에 Decimal 트림 것

int val = new BigDecimal(eval.toString()).intValue(); 

참고. 예외가 발생하면 intValueExact()을 사용하여 ArithmeticException을 던집니다.

+0

을 사용하십시오 산술 식에 대한 더블을 반환합니다. 변환하고 싶다고 가정하면 long을 입력하십시오. 이것이 어떻게 이루어질 것인가? –

+1

여기서 'BigDecimal'이 승자입니다. 'intValue' 대신'longValue()'를 사용하십시오. – SudoRahul

0
int i = Integer.valueOf((String) eval); 
1

는 ScriptEngine가 그렇게 더블로 캐스팅 나는 호기심에서 또 다른 질문이 그것있는 intValue 방법

int res = ((Double) eng.eval(s)).intValue(); 
관련 문제