如何检查数组中的下一个元素?

时间:2019-02-07 16:05:18

标签: c# arrays

我正在学习,目前正在尝试编写简单的多项选择测验。我不能只使用if else语句来编写它。 我试图做到这一点,以便它询问用户输入答案的问题(这很好),但是可以单独创建一个类,确定是否正确。 我的代码中数组的索引为空,我想知道在第一次迭代之后,当在下一个问题中再次调用该方法时,它将如何检查下一个索引。我尝试对每个路径使用a,但由于并非每个路径都有结果,都会出现错误。
private static readonly string[] answerArray = new string[5] { "C", "A", "B", "A", "C" };

    public static bool AnswerCalc(string ain)
    {
        if (ain == answerArray[])
        {
            Console.WriteLine("Correct");
            return true;
        }
        else
        {
            Console.WriteLine("Sorry that's wrong");
            return false;
        }
    }

我把它当作傻瓜,因为这就是我保持得分的方式。

2 个答案:

答案 0 :(得分:2)

如果要检查数组是否仅包含项:

var aInArr = arr.Contains("A");

这是.net内置的LINQ表达式。

将其作为非扩展方法定位数组的一种方法如下:

public bool Contains(string[] arr, string inputStr)
{
    for(int i = 0; i < arr.Length; i++)
    {
        if (item == inputStr[i])
            return true;
    }
    return false;
}

一旦数组中的项目用完,它将脱离for循环大括号并返回false

注意:为了简洁起见,我减少了结果,但是.net的方法是在常规输入上使用IEnumerable而不是数组,并使用foreach而不是for

public static Contains<T>(this IEnumerable<T> input, T compared)
{
    foreach (var item in input)
    {
       if (item == compared)
           return true;
    }
    return false;
}

答案 1 :(得分:0)

如果将整数存储在包含此方法的类中,则可以在函数调用结束时将其递增(确保在达到数组长度时将其重置为0)。在方括号之间使用该整数,如下所示:if (ain == answerArray[intValue])

如果您需要更多帮助,请告诉我,我们将很乐意为您提供更多信息。