我正在编写一个会产生几何逻辑字问题的程序,而我遇到了麻烦。我的目标是让程序随机创建一个预先设计的单词问题。到目前为止,该程序从用户获取输入,然后在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很新,并感谢他们的帮助。 提前谢谢。
答案 0 :(得分: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;
}
}
答案 1 :(得分:1)
如上所述,使用随机数生成给自己1,2,3,4等...然后将该数字作为参数传递给您的方法,然后使用“if,if else”语句来选择正确的操作去表演。同样,如上所述,我不会提供任何代码,以防这确实是一个家庭作业问题。
答案 2 :(得分:0)
您可以生成Word
或Phrase
对象,将其填充到List
。
从那里我们用Random
或Math.random
来从列表中提取单词或短语