我正在学习,目前正在尝试编写简单的多项选择测验。我不能只使用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;
}
}
我把它当作傻瓜,因为这就是我保持得分的方式。
答案 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])
如果您需要更多帮助,请告诉我,我们将很乐意为您提供更多信息。