1

私はどういうわけかJavaに慣れていないので、私の質問は些細なことに思えるかもしれませんが、私の本のどこにも答えが見つかりません。

算術式(例:(2 * x + y))を入力するユーザーとのダイアログを開始し、その式の結果を出力したい(xとyの値を指定した場合)

    String EXPRESION = null;
    EXPRESION = JOptionPane.showInputDialog("Please enter expresion for dy/dx");
    double x = 1.4;
    double y = 5;
    double output = HERE IS THE PROBLEM
    JOptionPane.showMessageDialog("The value is" +output);

ユーザーが挿入した文字列を変換できないため、xとyの算術式として機能し、出力の値を定義します。

TIA JMT

4

5 に答える 5

4

自分で解析するのはそれほど難しいことではありませんが、高速でおそらく正確な結果が必要な場合は、既存のライブラリの1つを使用して、JEP算術式の単純なパーサーなどの算術式を解析できます。

サンプルについては、 Jepコンソールを参照してください。Jepは有料ソフトウェアのようです。それは問題ではないかもしれません、さもなければ私が書いたように、あなたは多くの同等のライブラリを見つけることができるはずです。

于 2009-06-07T21:07:35.160 に答える
3

この種の動作を実現するには、式パーサーを作成する必要があります。これを実現するには、いくつかの方法があります。

  1. ANTLR などを使用して、独自の式パーサーを記述します。
  2. スクリプト言語 (Jython、Beanshell、JavaScript...) を組み込み、それを使用して式を解析および評価します。Java Scripting API は、これを行う方法を示します。
于 2009-06-07T20:56:28.940 に答える
1

文字列を式として評価するための Java 固有の機能はありません。したがって、自分で作業を行う必要があります。

手早く簡単なソリューションが必要な場合は、Javassist にスニペット コンパイラが含まれているため、式を使用して新しいクラスを定義し、それを呼び出して結果を取得した後、それを破棄できます (つまり、別のクラスローダーで実行します)。ただし、いくつかの作業が必要になります:)

http://www.jboss.org/javassist/

于 2009-06-07T21:52:30.297 に答える
1

JScheme を見ることもできます。jscheme jar ファイルをコンパイルして実行する必要があります。

import jscheme.JS; 

String query = "(+ 10 20)";
System.out.println(query + " = " + JS.eval(query));

http://jscheme.sourceforge.net/jscheme/doc/userman.html#siにある 3 番目の例を参照してください。

JScheme のメイン ページ ( http://jscheme.sourceforge.net/jscheme/main.html )

于 2010-07-16T00:30:13.100 に答える
0

文字列を算術式に変換する方法

import bsh.*;

 class Operation
 {

    public static void main(String[] args)throws Exception
    {
        Interpreter i=new Interpreter();
        int r=(Integer)i.eval(args[0]);
        System.out.println(r);
    }
}

このためには、bsh.jar ファイルという名前の別の jar ファイルが必要です。

上記のjarファイルのクラスパスを設定する必要があります

ソース: http://ohmjavaclasses.blogspot.com/2011/11/how-to-convert-string-into-arithmetic.html

于 2011-12-10T11:43:00.827 に答える