2013-07-17 2 views
0

Я пытаюсь получить мой цикл while, чтобы он продолжал повторять, пока не будет дан ответ на все вопросы, тогда он должен остановиться и отобразить бонус и окончательный счет. но не знаю, почему это не так? Помоги пожалуйста.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; 
        } 
       } 
     } 
    } 
} 
+4

Где вы выходите из своего бесконечного цикла ('while (true)')? Я этого не вижу. – Oded

+0

@Oned Очень верно. Выхода из цикла while нет. –

+0

@JayPatel @Oded: есть оператор 'if (stop) break;'. К сожалению, 'stop' никогда не устанавливается в' true'. – abelenky

ответ

6
if (stop) 
    break; 

Это никогда не бывает.

1

У вас есть условие остановки, if (stop) break; и оно находится за пределами switch(){}. Все идет нормально.

Это, однако, в филиале if (attempt > 1), так что если ваш счетчик attempt когда-либо выходит за пределы 1, тогда вы обречены на петлю навсегда.

1

Я вижу:

bool stop = false; 

, а также:

if (stop) 
    break; 

Но я никогда не вижу stop = true;

Где вы собираетесь установить прекратить правда?

Смежные вопросы