进程由于StackOverflowExeption而终止-C# - c#

我的代码无法解决此问题。

我正在做一个测验,但不能再问两次问题,所以我避免了这一点,但是当用尽所有选项时,它就会崩溃。

它也可能是其后的代码,但我不这么认为。

这是我的代码:

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();
    }
}

如果您需要更多代码来帮助我,请询问我。

提前致谢!

参考方案

StackOverflow上的StackOverflowException,很好!
Menu.main()最终会调用choiceQuestion()吗?
调用函数时,将在堆栈上创建一个新条目,并为其所有局部变量留出空间,并在返回时返回地址。如果函数调用自身(递归调用),则不会释放其原始堆栈条目。如果它经常调用自身而没有返回,则堆栈最终将耗尽空间并给出此异常。话虽如此,堆栈非常大-我认为默认值为1 MB-因此您需要大量递归调用以耗尽它。

您有两个自称的函数。如果他们经常这样做,那么您将耗尽堆栈空间。只需用循环替换递归调用即可。这是您的第一个功能:

private static void chooseQuestion() 
{    
    bool endQuizChosen = false;
    while ( !endQuizChosen ) {
        Random randomQuestion = new Random();
        int returnValue = randomQuestion.Next(1, 3);  
        // ... the rest of the function ...
        endQuizChosen = endQuiz();
    }
}

并编辑endQuiz()使其不调用自身,但如果用户要停止,则返回true,如果要继续,则返回false

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…

Json到php,json_decode返回NULL - php

我正在用PHP进行JSON解析器的一些API,用于存储有关遗产的信息。我在解析时遇到问题,因为它返回的是NULL值而不是数组或对象。简单的JSON代码可以很好地解析,但是可以这样:{"success":true,"totalCount":1,"data":[{"id":99694…

将ajax的值存储到javascript变量中 - javascript

我有一个php文件,其中我从服务器获取数据。该php文件的输出是一个包含json格式数据的变量。PHP文件:<?php $dbHostName = "localhost"; $dbUserName = "venseld"; $dbUserPass = "wecuuu"; $dbName = &…