【发布时间】:2016-05-11 18:47:00
【问题描述】:
我的代码有这个问题,我无法修复。
我正在做一个测验,但这些问题不能被问两次,所以我避免了这种情况,但是当它用完选项时它会崩溃。
也可能是后面的代码,但我不这么认为。
这是我的代码:
private static void chooseQuestion()
{
Random randomQuestion = new Random();
int returnValue = randomQuestion.Next(1, 3);
switch (returnValue)
{
case 1:
if (randomValues.questionOneChosen != 1)
{
questionOne();
}else
{
chooseQuestion();
}
break;
case 2:
if (randomValues.questionTwoChosen != 1)
{
questionTwo();
}else
{
chooseQuestion();
}
break;
}
endQuiz();
}
这是它之后的内容:
private static void endQuiz()
{
Console.Clear();
Console.WriteLine();
text.centered("You completed the QUIZ, well done!");
Console.WriteLine();
text.centeredWrite("Press ENTER to go back to the menu");
string input = Console.ReadLine();
if (input == "")
{
Menu.main();
}else
{
endQuiz();
}
}
如果您需要更多代码来帮助我,请询问我。
提前致谢!
【问题讨论】:
-
每次从 endQuiz 读取一行时,您再次调用 endQuiz,这将最终导致 StackOverflow,您还从 StackOverflow 的另一个来源chooseQuestion 调用 chooseQuestion。您必须重新设计所有逻辑,为您的代码获取一个主循环,然后从那里调用返回结果的函数,这样您就不会出现堆栈溢出。
-
我认为问题出在 endQuiz() 中。你想在那里做什么?您正在从控制台读取一行,然后如果它不是空行,那么您将重新调用
endQuiz()? -
你应该重新考虑你的设计。如果您想添加更多问题怎么办?
-
endQuiz永远无法到达...
标签: c# crash stack-overflow