&引用;如果;部分未执行(C#)

&引用;如果;部分未执行(C#),c#,if-statement,C#,If Statement,作为我编程课的一部分,我对它相当陌生,所以我需要一些帮助 我必须创建一个执行以下操作的程序(松散翻译): 创建一个让孩子练习数学的程序 让他输入一个数字,一个算术运算符,另一个数字,最后是方程的答案 如果上述方程式的答案正确,则显示一条消息,称为“Bravo” 如果答案不正确。让他再打一个答案。他最多有8次机会(包括第一次);及 如果8次尝试后他仍然没有得到自己方程式的答案,你可以告诉他休息一下 我在代码中遇到的问题是,最后的一个条件(if(ans==nb3))甚至从未执行过 例如,我输入1-1

作为我编程课的一部分,我对它相当陌生,所以我需要一些帮助

我必须创建一个执行以下操作的程序(松散翻译):

  • 创建一个让孩子练习数学的程序

  • 让他输入一个数字,一个算术运算符,另一个数字,最后是方程的答案

  • 如果上述方程式的答案正确,则显示一条消息,称为“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;
                        }
    
                   }
                }
    
            }
        }
    
    }     
    
    int nb1,nb2,nb3,ans=0;
    字符串op;
    Console.WriteLine(“Entrez un premier chiffre”);
    nb1=Convert.ToInt32(Console.ReadLine());
    控制台写入线(“操作员算术”);
    op=Convert.ToString(Console.ReadLine());
    控制台写入线(“Entrez un deuxieme chiffre”);
    nb2=Convert.ToInt32(Console.ReadLine());
    控制台。书写(“请回复”);
    nb3=Convert.ToInt32(Console.ReadLine());
    开关(op)
    {
    大小写(“+”):
    案例(“加”):
    ans=nb1+nb2;
    打破
    案例(“-”):
    案例(“MOIN”):
    ans=nb1-nb2;
    打破
    案例(“*”):
    案例(“倍数”):
    ans=nb1*nb2;
    打破
    案例(“/”):
    案例(“除数”):
    ans=nb1/nb2;
    打破
    }
    如果(ans==nb3)
    控制台写入线(“Bravo”);
    其他的
    {
    控制台。写入线(“Mauvaise Response”);
    for(int t=1;t<8;t++)
    {
    控制台。写线(“请问是否有回复?”);
    Console.ReadLine();
    如果(ans==nb3)
    {
    打破
    }
    }
    }
    }
    }
    }     
    
    您从未在for循环中重新分配输入变量:

     for (int t = 1; t < 8; t++)
     {  
         Console.WriteLine("Quel est la reponse?");
         Console.ReadLine();
         if (ans == nb3)
             break;   
     }
    
    这样,新的用户输入将与
    ans
    进行比较,而不是与以前输入的值进行比较


    就风格而言,尽量避免使用“nb1”、“nb2”和“nb3”等变量名,因为它们不太具有描述性。另外,如果您有这样的编号变量,那么几乎可以肯定您需要一个数组而不是多个变量。

    对不起?请在问题中注意你的语言。你不需要告诉我们你能用什么,这些问题是为了帮助所有人,而不仅仅是你。在这里写的时候忘了编辑那部分。对不起@“p***off”一词被认为是冒犯性的语言。我把它编辑成“走开”(等待批准)。在你的职业生涯中,你可能会发现自己经常使用这个网站,如果某个潜在的雇主在这里发现了你的把柄,并读到了这篇文章,那么,这只是一个不好的外观。欢迎来到stackoverflow!谢谢你的提示!下次在这里发帖时我会记住这一点。布雷德利。。这个问题不是太宽泛了吗?它只是陈述了一系列的需求,甚至没有实际的问题。那么为什么要回答呢?@JK。他有一个问题陈述:“我在代码中遇到的问题是,最后一个条件(if(ans==nb3))从未执行过”,并显示了他的尝试。我的回答显示他只是遗漏了一个关键部分。我同意它不会赢得年度最佳问题,但就家庭作业问题而言,它是不错的。@JK对于所展示的代码来说,它与跳出框框思考并能够使用不同类型的循环快速将代码重构为工作解决方案的区别并没有那么大。…@Dr.Roflcopter Right。。。因为您从未在循环中指定输入变量。你试过我的建议了吗?请注意,“Bravo”不会被打印出来,但添加起来很简单,当输入正确答案时,程序当前将刚刚结束。(为了清晰起见,添加了一些打印声明。)
    for (int t = 1; t < 8; t++)
    {  
        Console.WriteLine("Quel est la reponse?");
        nb3 = int.Parse(Console.ReadLine());
          if (ans == nb3)
             break;    
    }