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
}

还有另外两个 createStory 方法。另外,我要展示每个问题的证明,每个方法都有自己的证明,那么我是否可以展示相同方法的证明,基本上只是将证明方法和故事方法链接在一起?

我对Java相当陌生,感谢您的帮助。提前致谢。

4

3 回答 3

2

要仅回答您的标题,您可以使用带有反射的随机生成,但这绝不是您应该解决当前问题的方法。

不要尝试随机调用方法。查看java.util.RandomnextInt()并使用它根据它返回的值执行独特的操作。

这似乎是家庭作业,这就是为什么我没有在这里给你一个完整的解决方案。

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

您可以生成一个WordPhrase对象,将它们填充到一个List.

从那里我们可以从列表中提取一个单词或Random短语Math.random

于 2012-10-06T03:31:04.200 回答