【发布时间】:2021-06-23 19:41:39
【问题描述】:
我需要编写一个程序(使用继承),该程序使用随机数生成器生成 2 个随机数,将这两个数字作为加法问题呈现,然后当问题被回答时,生成一个使用新随机数的新问题数字。到目前为止,我在 3 个单独的 java 文件中有以下代码:
public int numberGenerator()
{
int num = 0;
Random ranNum = new Random();
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 1; i < 20; i++)
{
num = ranNum.nextInt(10);
list.add(num);
}
Collections.shuffle(list);
for (int i = 0; i<20; i++)
{
list.get(num);
}
return num;
}
int rand1 = numberGenerator();
int rand2 = numberGenerator();
int sum = rand1 + rand2;
String sumCompare = String.valueOf(sum);
我有这个代码来提出这个问题:
while (problem.getSum() < 10)
{
problem.setText("What is " + problem.getRand1() + " + " + problem.getRand2()
+ " ?");
problem.setAnswer(problem.getSumCompare());
presentQuestion(problem);
}
假设它吐出的随机数是 2 和 3。它会问我,“2+3 是什么?”然后我会正确回答它,它会问我另一个问题,但它会再次问我“什么是 2+3?”我需要代码来问我一个不同的加法问题,而不是一遍又一遍地使用相同的数字。如果我遗漏了信息,我提前道歉,如果需要了解更多信息,请告诉我,我已尽力提供!
【问题讨论】:
-
所以.... 只是按照你的要求去做? “它会问我,“什么是 2+3?”然后我会正确回答它,它会问我另一个问题”,所以在接受的答案上生成新的数字。如果你走到这一步,你就得到了:只需生成新的数字。
-
你把这弄得太复杂了。不需要您的方法
numberGenerator(),当然也不需要ArrayList和改组,Random类会根据需要为您提供随机数。说到这一点,您还应该不在每次需要新值时创建一个新的Random对象。在您的程序中创建一个Random实例,然后继续重复使用它。 -
我和@pjs 在一起。您的代码比必要的复杂得多。
-
@pjs 不幸的是,数字生成器方法是我的作业要求的一部分,但感谢您指出我的代码过于复杂......我在脑海中过度复杂的编程,所以它看起来像我的代码反映了这一点,道歉......
-
@Gill 项目要求有一个名为
numberGenerator()的方法吗?我问是因为根据您所描述的逻辑,您似乎需要做的就是返回从nextInt()获得的值,考虑到Random实例应该是静态并创建的,这似乎不值得包装在一个方法中在你的main。