如何随机调用方法在java中运行?

时间:2012-10-06 03:20:04

标签: java methods random

我正在编写一个会产生几何逻辑字问题的程序,而我遇到了麻烦。我的目标是让程序随机创建一个预先设计的单词问题。到目前为止,该程序从用户获取输入,然后在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很新,并感谢他们的帮助。 提前谢谢。

3 个答案:

答案 0 :(得分: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;      
    }    

}

答案 1 :(得分:1)

如上所述,使用随机数生成给自己1,2,3,4等...然后将该数字作为参数传递给您的方法,然后使用“if,if else”语句来选择正确的操作去表演。同样,如上所述,我不会提供任何代码,以防这确实是一个家庭作业问题。

答案 2 :(得分:0)

您可以生成WordPhrase对象,将其填充到List

从那里我们用RandomMath.random来从列表中提取单词或短语