1

私は、子供の問題解決能力をテストする簡単なプログラムを作成しています。これは基本的に、プログラムがテキスト ファイルから質問を取り出し、その質問を出力して、ユーザーが正しい答えを入力したかどうかを確認するクイズです。

これまでのところ、これをテキストファイルとして持っていました:

David collects 2 comics each month for 3 months. For the next 2 months, he only collects one each month. How many comics does David collect altogether?,8
Sally gives out 4 party bags at the end of her party. Inside each party bag are 5 balloons. How many balloons does Sally give out?,20

次に、[0][0] が最初の質問で [0][1] が最初の回答である 2D 配列に入れます。それは機能しますが、私は乱数を使用したいと思います。つまり、プログラム自体が答えを計算する必要があります。つまり、テキスト ファイルは次のようになります。

David collects X comics each month for Y months. For the next Z months, he only collects one each month. How many comics does David collect altogether?,((X*Y)+Z)
Sally gives out X party bags at the end of her party. Inside each party bag are Y balloons. How many balloons does Sally give out?,(X*Y)

ここで、X、Y、Z は乱数で、カンマの後の部分は答えを計算する式です。質問を出力するにif (Question.contains("X")){Question = Question.replace("X", A);}は、A がランダムな int の場合に使用できます。しかし、どうすればJavaに答えを計算させることができますか? 文字列の中にある場合int answer=((X*Y)+Z)、この文字列をコードに変換するにはどうすればよいですか? Java Compiler API は文字列を使用可能なコードに変更できると読みましたが、これはどのように機能しますか?

ありがとう

4

1 に答える 1

1
import javax.script.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
    ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
    Map<String, Object> vars = new HashMap<String, Object>();
    vars.put("X", 2);
    vars.put("Y", 1);
    vars.put("Z", 3);
    System.out.println("result = "+engine.eval("((X*Y)+Z)", new SimpleBindings(vars)));
 }
}

javax.script を使用すると、単純な式を解析して解決し、乱数を生成できます

(int) (Math.random()*20)) やるべき

于 2013-07-22T09:55:49.910 に答える