>  기사  >  Java  >  Java에서 수학 표현식을 효율적으로 평가하는 방법은 무엇입니까?

Java에서 수학 표현식을 효율적으로 평가하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-31 19:28:30554검색

How to Evaluate Math Expressions Efficiently in Java?

Java에서 수학 표현식을 평가하는 방법

이 기사에서는 Java에서 수학 표현식을 평가하는 다양한 접근 방식을 살펴보겠습니다. 이는 과학 컴퓨팅, 데이터 분석 및 기타 애플리케이션의 일반적인 요구 사항입니다.

한 가지 널리 사용되는 접근 방식은 JEP(Java Expression Parser)와 같은 라이브러리를 활용하는 것입니다. 표현식을 평가하기 위한 사용자 친화적인 API를 제공하므로 Java 코드에 쉽게 통합할 수 있습니다. 예를 들면 다음과 같습니다.

<code class="java">import org.nfunk.jep.JEP;

public class MathExpressionEvaluator {

    public static void main(String[] args) {
        // Create a JEP instance
        JEP jep = new JEP();

        // Example formula provided by the user
        String formula = "sin (x + pi)/2 + 1";

        // Set the variable values in the formula
        jep.addVariable("x", 0.5);

        // Parse and evaluate the formula
        try {
            jep.parseExpression(formula);
            double result = jep.getValue();
            System.out.println("Result: " + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}</code>

또는 exp4j도 높이 평가되는 또 다른 표현식 평가자입니다. 효율적인 평가를 위해 Dijkstra의 Shunting Yard 알고리즘을 따릅니다.

<code class="java">import com.googlecode.exp4j.Expression;
import com.googlecode.exp4j.ExpressionBuilder;

public class MathExpressionEvaluator {

    public static void main(String[] args) {
        // Example formula provided by the user
        String formula = "3 * sin(y) - 2 / (x - 2)";

        // Replace 'x' and 'y' with actual values in the formula
        Expression expression = new ExpressionBuilder(formula)
                .variables("x", "y")
                .build()
                .setVariable("x", 0.5)
                .setVariable("y", 1.0);

        // Calculate the result
        double result = expression.evaluate();
        System.out.println("Result: " + result);
    }
}</code>

JEP와 exp4j 모두 강력한 표현식 평가 기능을 제공하여 Java에서 수학적 표현식을 사용하는 편리하고 효율적인 방법을 제공합니다.

위 내용은 Java에서 수학 표현식을 효율적으로 평가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.