因此,当我的答案在TextValidation上是错误的,例如,TextValidation值=“寓言”,什么都不会起作用,当TextValidation值不在“寓言”或其他任何地方时,也不会发生任何事情。我尝试删除语句中的else,TextValidation value =“Fable值”又开始工作了。我不知道我的代码T_T出了什么问题。
public TextMeshProUGUI TextValidation;
string[] rightanswers = { "able", "alef", "bale", "blae", "feal",
"flab", "flea", "leaf", "fable" };
public void rightanswersButton()
{
for (int index = 0; index < rightanswers.Length; index++)
{
if (finalAnswer == rightanswers[index])
{
TextValidation.text = "You are correct your answer is :" + finalAnswer;
delete();
}
else
{
TextValidation.text = "You are wrong";
delete();
}
}
}
发布于 2019-01-18 14:45:52
你只关心用户的值是否存在于数组中,但你要检查每个值,所以你最终会找到最多一个正确的答案和一大堆错误的答案,并打印出大量不必要的消息。
有几种方法可以解决这个问题。例如,如果您找到一个值,那么您可以设置一个标志并提前中断循环。
bool isFound = false;
for (int index = 0; index < rightanswers.Length; index++)
{
if (finalAnswer == rightanswers[index])
{
isFound = true;
break;
}
}
if (isFound)
TextValidation.text = "You are correct your answer is :" + finalAnswer;
else
TextValidation.text = "You are wrong";
delete();
或者,您可以使用LINQ来查看数组中是否有任何元素与您要查找的值相匹配。
if (rightanswers.Any(x => x == finalAnswer))
TextValidation.text = "You are correct your answer is :" + finalAnswer;
else
TextValidation.text = "You are wrong";
delete();
https://stackoverflow.com/questions/54256177
复制