0

我正在尝试制作一个潜在的两人程序,其中一个用户被提示输入一个问题,然后提示输入该问题的答案,这两个问题都将存储在一个二维数组中。第一个玩家最多可以输入 10 个问题。在存储了问题和该问题的答案之后,我希望能够提示第二个玩家回答第一个玩家提出的问题。

现在我被困在一个非常基本的部分,它将问题和答案存储在数组中。

这是到目前为止我的第一堂课的代码:

class MakeOwnQuestion
{
    string question;
    string answer;
    string[,] makequestion = new string[10, 2];

    public void MakeQuestion(string question, string answer, int index)
    {
        if (index < makequestion.Length)
        {
            makequestion[index, 0] = question;
            makequestion[index, 1] = answer;
        }
    }

我的第二堂课:

class MakeOwnQuestionUI
{
    MakeOwnQuestion newquestion;

    public void MainMethod()
    {
        PopulateArray();
    }

    void PopulateArray()
    {
        string question;
        string answer;
        Console.WriteLine("Enter Your Question: ");
        question = Console.ReadLine();

        Console.WriteLine("Enter Your Answer: ");
        answer = Console.ReadLine();

        newquestion.MakeQuestion(question, answer, 0);

        Console.WriteLine("Enter Your Question: ");
        question = Console.ReadLine();

        Console.WriteLine("Enter Your Answer: ");
        answer = Console.ReadLine();

        newquestion.MakeQuestion(question, answer, 1);
    }
}

在用户输入他们的第一个答案“对象引用未设置为对象的实例”后,我不断收到相同的错误消息

4

1 回答 1

7

您需要初始化您的newquestion实例:

MakeOwnQuestion newquestion = new MakeOwnQuestion();

我还建议您使用GetLength而不是Length多维数组:

if (index < makequestion.GetLength(0))
{
    ...
}

或者更好的是,只是List<T>某种类型,例如Tuple<string, string>

class MakeOwnQuestion
{
    List<Tuple<string, string>> makequestion = new List<Tuple<string, string>>();

    public void MakeQuestion(string question, string answer, int index)
    {
        makequestion.Add(Tuple.Create(question, answer));
    }
}
于 2013-10-22T22:36:22.263 回答