1

幾何学の論理単語問題を生成するプログラムを書いていますが、問題があります。私の目標は、事前に設計された単語の問題をプログラムにランダムに作成させることです。これまでのところ、プログラムはユーザーからの入力を受け取り、Story メソッドでその情報を使用します。これは、Mad Libs のゲームのようです。とにかく、ユーザーがプログラムを起動するたびに実行する Story メソッドをランダムに選択したいと考えています。これまでのところ、これは私が持っているものです:

import cs1.Keyboard;
 public class LogicProof {
//Main method
public void main () {
    System.out.println ("Enter 1. to start.");
    System.out.println ("Enter 2. to exit.");
    int choice = Keyboard.readInt();
    if (choice == 1) {          //Take info in and send to createStory

        //Randomly run methods

    }
    if (choice == 2) {
        System.out.println ("\nGoodbye.");
    }
//Create the first story using inputs from main
private void createStory(String adj,String adj2,String adj3,String action) {               

      //Use values from main() to create a problem
}

他にも 2 つの createStory メソッドがあります。また、各問題の証明を表示しますが、それぞれの方法には独自の証明があるので、基本的には証明方法とストーリー方法をリンクするだけで、同じ方法の証明を表示できますか?

私はJavaにかなり慣れていないので、助けていただければ幸いです。前もって感謝します。

4

3 に答える 3

2

タイトルだけに答えるには、リフレクションでランダム生成を使用できますが、それは現在の問題を解決する方法ではありません。

メソッドをランダムに呼び出そうとしないでください。java.util.Randomを見て、nextInt()それを使用して、返される値に基づいて一意の操作を実行します。

これは宿題のように思えるので、ここで完全な解決策を提供していません。

public class MadLibs {

    public static final String[] STARTERS = { /* ... */ };
    public static final String[] ENDINGS  = { /* ... */ };

    public static String generate(String ... adjectives) {
        final Random random = new Random();
        final StringBuilder string = new StringBuilder(STARTERS[random.nextInt(STARTERS.length-1)]);

        for (String adjective : adjectives) {
            string.append(adjective);
            string.append(TRANSITIONS[random.nextInt(TRANSITIONS.length - 1)]);
        }

        return string.toString();
    }   

}

これは、開始するための非常に単純で大まかな実装です。

または、いくつかの具体的なバリエーションしかない場合は、次のようになります。

public class MadLibs {

    public static String generate(String ... adjectives) {
        int result = new Random().nextInt(MAX);
        String madLib = null;

        switch (result) {

            case 0:
              // ...
              break;

            case 1:
              // ...
              break;

            default:
              // ...
              break;            

        } 

        return madLib;      
    }    

}
于 2012-10-06T03:24:04.993 に答える
1

上記のように、1、2、3、4 などの乱数生成を使用します。次に、その数値をパラメーターとしてメソッドに渡し、「if、if else」ステートメントを使用して、実行する正しい操作を選択します。繰り返しますが、上記のように、これが実際に宿題の問題である場合に備えて、コードは提供しません。

于 2012-10-06T03:36:30.523 に答える
0

WordまたはPhraseオブジェクトを生成し、それらをList.

そこから、リストから単語やフレーズを抽出したりRandomMath.random

于 2012-10-06T03:31:04.200 に答える