gpt4 book ai didi

java - 使用 java 对象创建一个简单的数学游戏

转载 作者:太空宇宙 更新时间:2023-11-04 09:46:53 24 4
gpt4 key购买 nike

我正在尝试使用 Java 对象创建一个简单的数学游戏。我的目标是创建一个问题类,其中包含一种用随机数显示问题的方法、一种检查答案的方法、一个问题结构。如何使用这些对象生成 10 个随机问题?有加法、减法和乘法问题。并在最后打印出正确答案的数量。

我已经创建了我的问题类,我的第一个方法使用变量“a”和“b”显示一个随机问题。并存储答案。我的第二种方法使用用户输入检查答案并打印结果。到目前为止,当我运行我的程序时,它只一遍又一遍地显示相同的问题。

这是我的问题课

import java.util.*;

public class Question {
private int a;
private int b;
private String Question;
private int correct;
Random rand = new Random();
Scanner input = new Scanner(System.in);
int count = 0;

Question(int c, int d) {
x = rand.nextInt(20);
y = rand.nextInt(20);
}

public void askQuestion() {
if (a > b) {
System.out.println("What is " + a + " - " + b + " ?\n");
correct = a - b;
} else {
System.out.println("What is " + a + " + " + b + " ?\n");
correct = a + b;
}
}

public void Check() {
int response = Integer.parseInt(input.next());
if (response == correct) {
System.out.printf("yes.\n");
count++;
} else {
System.out.printf("No. It is " + correct + ".\n");
}
}
}

我的主要方法如下所示

public class Main {
public static void main(String[] args) {
Question q1 = new Question(1,2);
for (int i = 1; i < 10; i++) {
q1.askQuestion();
q1.check();
}
}
}

在我的输出中,它显示了带有两个随机数的问题,但它一遍又一遍地打印相同的问题。例如:

What is 13 - 1 ?

12
That is correct.
What is 13 - 1 ?

12
That is correct.
What is 13 - 1 ?

3
Wrong!. The answer is 12.
What is 13 - 1 ?

最终我希望我的输出看起来像:

What is 4 + 6?

What is 7 - 3?

有什么办法可以解决这个问题吗?并使这个游戏更具互动性?欣赏它。

最佳答案

您的问题是由于您正在创建一个 Question 对象,该对象会生成两个随机数(在您的情况下为 13 和 1)。然后,您会进行询问 10 个问题的循环,但您使用相同的 Question 对象 - 因此每次都使用相同的随机数。要解决此问题,请执行以下更改:

在您的问题构造函数中,删除参数,您不需要它们。分配给变量ab:

    private Question(){
a = rand.nextInt(20);
b = rand.nextInt(20);
}

因此,每次创建问题时,您都会生成两个随机数,并将它们分配给您之前在顶部代码中声明的变量(在您的代码中,声明了 a 和 b ,但未使用)。

然后在你的 main 中,将其更改为以下内容:

public static void main(String[] args) {
for(int i = 0; i < 10; i++) {
Question q1 = new Question();
q1.askQuestion();
q1.check();
}
System.out.println("Number correct: " + count); //print amount correct, to use this make variable "count" static.
}

变化在于,现在您每次执行循环时都会创建一个新的 Question 对象,并获取新的随机值。每次提出新问题时,它都会使用新的随机值创建一个新的问题对象并覆盖旧的值。当你给出并检查答案后,它会问问题10次,之后程序会输出正确答案的数量并停止。

3 个问题的示例输出:

What is 17 - 15 ?

2
yes.
What is 8 + 11 ?

19
yes.
What is 9 - 0 ?

5
No. It is 9.
Number correct: 2

关于java - 使用 java 对象创建一个简单的数学游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55319957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com