c#....我的while循环不断重复

时间:2013-07-17 21:12:30

标签: c#

我试图让我的while循环只能继续重复直到所有主题都被回答,然后它应该停止并显示奖金和最终分数。但不知道为什么不这样做呢?求助。

namespace Assignment
{
    class Class1
    {
        public static int attempt, sum, AptScore, GenScore, MathScore, EngScore, bonus, TotalScore, FinalScore, choice = 0;
        public static string ans;
        static void Main(string[] args)
        {
            bool stop = false;
            Console.WriteLine("Welcome to this Salisbury University IQ Test game");
            Console.WriteLine();
            Console.WriteLine("How many times have you attempted this test?");
            attempt = Convert.ToInt32(Console.ReadLine());
            while (true)
                if (attempt > 1)
                {
                    Console.WriteLine("You cannot take this test");
                }
                else
                {
                    Console.WriteLine(" \n1. Aptitude \n2. English. \n3. Math \n4. Gk \n5. Exit");
                    choice = Convert.ToInt32(Console.ReadLine());
                    switch (choice)
                    {
                        case 1:
                            Console.WriteLine(" What was the name of the lebanon tyrant who ruled for years unending before he was toppled due to civil war? \nA. Osama Bin laden \nB. Gaddafi \nC. Jonathan ");
                            ans = Console.ReadLine();
                            if (ans == "B" || ans == "b")
                            {
                                AptScore += 10;
                            }
                            break;
                        case 2:
                            Console.WriteLine(" What is the antonym of Pleasure? \nA. Pain \nB. Ecstacy \nC. Wonder");
                            ans = Console.ReadLine();
                            if (ans == "A" || ans == "a")
                            {
                                EngScore += 10;
                            }
                            break;
                        case 3:
                            Console.WriteLine(" What is the sum of 435 and 345? \nA. 799 \nB. 780 \nC. 600 ");
                            ans = Console.ReadLine();
                            if (ans == "B" || ans == "b")
                            {
                                MathScore += 10;
                            }
                            break;
                        case 4:
                            Console.WriteLine(" What year did Nigeria become a republic? \nA. 1960 \nB. 1963 \nC. 1990 ");
                            ans = Console.ReadLine();
                            if (ans == "B" || ans == "b")
                            {
                                GenScore += 10;
                            }
                            break;
                        case 5:
                            Environment.Exit(0);
                            break;
                    }
                    if (stop)
                        break;
                    TotalScore = MathScore + GenScore + EngScore + AptScore;
                    Console.WriteLine("Your total score is : " + TotalScore);
                    if (TotalScore == 10)
                    {
                        Console.WriteLine(" You have no Bonus point ");
                    }
                    else if (TotalScore == 20)
                    {
                        bonus += 2;
                        Console.WriteLine("Your Bonus is {0}", bonus);
                    }
                    else if (TotalScore == 30)
                    {
                        bonus += 5;
                        Console.WriteLine("Your Bonus is {0}", bonus);
                    }
                    else if (TotalScore == 40)
                    {
                        bonus += 10;
                        Console.WriteLine("Your Bonus is {0}", bonus);
                    }
                    else
                    {
                        FinalScore = TotalScore + bonus;
                        Console.WriteLine("Your finalscore is : " + FinalScore);
                    }
                    switch (FinalScore)
                    {
                        case 10:
                            if (FinalScore >= 10)
                            {
                                Console.WriteLine("Your IQ level is below average");
                            }
                            break;
                        case 22:
                            if (FinalScore >= 22)
                            {
                                Console.WriteLine("Your IQ level is average");
                            }
                            break;
                        case 35:
                            if (FinalScore >= 35)
                            {
                                Console.WriteLine("You are intelligent");
                            }
                            break;
                        case 40:
                            if (FinalScore == 40)
                            {
                                Console.WriteLine("You are a genius");
                            }
                            break;
                        default:
                            break;
                    }
                }
        }
    }
}

3 个答案:

答案 0 :(得分:6)

if (stop)
    break;

这永远不会发生。

答案 1 :(得分:1)

您确实有一个停止条件if (stop) break;,它位于switch(){}之外。到现在为止还挺好。

然而,它位于if (attempt > 1)的else分支中,所以如果你的attempt计数器超出1,那么你注定要永远循环。

答案 2 :(得分:1)

我明白了:

bool stop = false;

还有:

if (stop)
    break;

但我从未见过stop = true;

你打算将stop设置为true?