这是我的第一个代码块,我的主要类。我已经创建了问题数组和对象,这只是为了向你们展示我想要完成的工作。
for(int i = 0; i<questionArray.length; i++)
{
questionArray[i].askQuestion();
questionArray[i].getAnswer();
questionArray[i].checkAnswer();
}
这些是我在上面循环中使用的方法:
public void askQuestion()
{
System.out.println(question);
System.out.println("This question is worth " + pointValue + " point(s)");
System.out.println("Please enter your answer: ");
}
public String getAnswer()
{
return answer;
}
public boolean checkAnswer()
{
Scanner keyboard = new Scanner(System.in);
String UserAnswer = keyboard.nextLine();
if (UserAnswer.equalsIgnoreCase(answer))
{
System.out.println("congratulations you have earned " + pointValue + " point(s)\n");
return true;
}
else
{
System.out.println("sorry you did not get the answer correct");
System.out.println("The correct answer is " + this.answer + "\n");
return false;
}
}
所以你可以看到这是一个TriviaGame
类,
1.)我正在尝试制作两个方法,一个能够在每个问题之后显示pointValue(仅当用户回答==回答时)。
2.)第二个是当用户得到正确答案时,将每个pointValue(当答案相等时,A.k.a checkAnswer == true)相加,并在结尾显示所有结果。
答案 0 :(得分:2)
int score += pointValue; // note the plus (+)
另外,请考虑将if (checkAnswer() == true)
更改为if (checkAnswer())
答案 1 :(得分:1)
在第一个代码块中,您在for循环中运行每个方法,您应该运行questionArray[i].updateScore()
而不是questionArray[i].checkAnswer()
。截至目前,您正在运行checkAnswer()
,它会从用户那里获得答案并检查其是否正确。但是如果你计划在此之后调用updateScore()
,我相信你会在if语句的条件下再次运行checkAnswer()
,从而再次收集用户的回答而无意义。只运行updateScore()
,您将收集答案并更新分数。我不确定你是否已经知道这一点,但我想我会告诉你以防万一。
至于你的初步问题,你可以试试这个:
为Question类创建一个布尔实例变量(初始化为false),如果答案正确,将设置为true。这样,您可以遍历questionArray
并检查他们的答案是否正确。如果答案正确,则将问题pointValue
添加到总分中。
我希望我理解你的问题,希望这有帮助,
泰勒
答案 2 :(得分:1)
最简单,最简单的方法是使用实例或静态变量来跟踪它。
答案 3 :(得分:0)
您想使用变量score
来汇总到目前为止赚取的积分吗?然后你必须使它成为类的属性或将其声明为静态,应该用0初始化它,事实上,必须添加每次获得的分数,正如波希米亚人已经告诉过你的那样。
int score = pointValue;
以及
int score += pointValue;
是您的updateScore方法的本地方法,当该方法离开时,它的值将会丢失。如果你宣布
static int score = 0;
RGDS,
托马斯