【问题标题】:How can I randomly call a method to run in java?如何随机调用一个方法在java中运行?
【发布时间】:2012-09-27 05:00:27
【问题描述】:

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

【问题讨论】:

    标签: java methods random


    【解决方案1】:

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

    不要尝试随机调用方法。看看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;      
        }    
    
    }
    

    【讨论】:

    • 它实际上不是家庭作业,而是我试图拼凑起来让我的老师和他的其他一些学生一起使用的东西。
    • @user1724466 看看以上是否有帮助。
    【解决方案2】:

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

    【讨论】:

    • 好的,我想我可能已经从你刚才说的中得到了一个想法,我会尝试一下,然后回来揭示我的成功或失败。谢谢
    • 我明白了,这比我预期的要容易得多,不过感谢您引导我朝着正确的方向前进。
    【解决方案3】:

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

    从那里我们可以使用 RandomMath.random 之类的东西从列表中提取单词或短语

    【讨论】:

    • 怎么样?哈哈,抱歉,但我对大部分内容都很陌生。
    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多