하지의 코딩일지/JAVA TEST
계산 순서에 따라 계산하기 테스트
하지마지
2023. 7. 30. 20:43
728x90
사칙연산 기호에 맞춰 계산하는 테스트
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
class Solution {
public double solution(String s) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
try {
Object result = engine.eval(s);
double doubleResult = Double.parseDouble(result.toString());
return Math.round(doubleResult * 100.0) / 100.0;
} catch (ScriptException e) {
e.printStackTrace();
return 0.0; // 수식을 잘못 입력한 경우 처리 (또는 예외 처리 방식을 선택)
}
}
public static void main(String[] args) {
Solution solution = new Solution();
String s = "3+5*2-4/2";
double result = solution.solution(s);
System.out.println(result); // 출력 결과: 10.0
}
}
위 코드에서 사용한 방법은 Java의 javax.script 패키지에 있는 ScriptEngine을 활용하여 JavaScript 엔진을 사용하는 방법입니다. JavaScript 엔진을 사용하면 문자열 형태로 주어진 수식을 쉽게 계산할 수 있습니다.
- ScriptEngineManager와 ScriptEngine 생성: ScriptEngineManager는 ScriptEngine을 생성하는 매니저입니다. manager.getEngineByName("JavaScript") 코드를 통해 JavaScript 엔진을 사용할 수 있는 ScriptEngine 객체를 얻어옵니다.
- engine.eval(s): ScriptEngine의 eval() 메소드를 사용하여 문자열 s에 해당하는 수식을 계산합니다. 이 메소드는 주어진 문자열 수식을 JavaScript 엔진에 넘기고, 그 결과를 Object 형태로 반환합니다.
- Double.parseDouble(): eval() 메소드로 계산한 결과는 Object 형태이므로, 이를 Double 형태로 변환합니다.
- 소수점 자리 반올림: Math.round(doubleResult * 100.0) / 100.0를 통해 소수점 둘째 자리까지 반올림하여 반환합니다.
따라서, 위의 코드는 주어진 수식을 JavaScript 엔진을 사용하여 간단하고 편리하게 계산하는 방법을 보여주고 있습니다. Java 코드를 직접 작성하여 수식을 계산하는 대신, JavaScript 엔진을 활용하여 문자열 수식을 쉽게 계산할 수 있습니다.
728x90