作为我编程课程的一部分,我对它很新,所以我需要一些帮助。
我必须创建一个执行以下操作的程序(松散翻译):
创建一个让孩子练习数学的程序;
让他输入数字,算术运算符,另一个数字,最后是等式的答案;
如果上述等式的答案是正确的,则显示一条消息“Bravo”;
如果答案不正确。让他输入另一个答案。他最多有8次机会(包括第一次机会);以及
如果经过8次尝试,他仍然无法得到他自己方程的答案,你可以告诉他休息一下。
我的代码中的问题是最后一个条件(if(ans == nb3))永远不会执行。
例如,我输入1 - 1 = 5.我会说我的答案是false
而且我需要输入另一个答案,到目前为止,一切都很好。如果我在那之后键入正确的答案(1 - 1 = 0),它仍然会要求我输入另一个答案而不是打破循环。
我的计划的当前状态:
int nb1, nb2, nb3, ans = 0;
string op;
Console.WriteLine("Entrez un premier chiffre");
nb1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Entrez un operateur arithmetique ");
op = Convert.ToString(Console.ReadLine());
Console.WriteLine("Entrez un deuxieme chiffre");
nb2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Quel est la reponse");
nb3 = Convert.ToInt32(Console.ReadLine());
switch (op)
{
case ("+"):
case ("plus"):
ans = nb1 + nb2;
break;
case ("-"):
case ("moins"):
ans = nb1 - nb2;
break;
case ("*"):
case ("multiplie"):
ans = nb1 * nb2;
break;
case ("/"):
case ("divise"):
ans = nb1 / nb2;
break;
}
if (ans == nb3)
Console.WriteLine("Bravo");
else
{
Console.WriteLine("Mauvaise reponse");
for (int t = 1; t < 8; t++)
{
Console.WriteLine("Quel est la reponse?");
Console.ReadLine();
if (ans == nb3)
{
break;
}
}
}
}
}
}
答案 0 :(得分:3)
您永远不会在for循环中重新分配输入变量:
for (int t = 1; t < 8; t++)
{
Console.WriteLine("Quel est la reponse?");
Console.ReadLine();
if (ans == nb3)
break;
}
请注意,您对Console.ReadLine
的返回值不执行任何操作。你需要
for (int t = 1; t < 8; t++)
{
Console.WriteLine("Quel est la reponse?");
nb3 = int.Parse(Console.ReadLine());
if (ans == nb3)
break;
}
这样新用户输入将与ans
进行比较,而不是先前输入的值。
作为一种风格问题,尽量避免像&#34; nb1&#34;等变量名称。 &#34; NB2&#34;和&#34; nb3&#34;因为它们不是很具描述性。此外,如果您有这样的编号变量,那么几乎可以肯定您需要一个数组而不是多个变量。