首页 > 解决方案 > 为什么'else'部分中的括号会创建一个无限循环,反之亦然?

问题描述

using System;
using static System.Console;
class EnterUppercaseLetters
{
   static void Main()
   {
       string userInput;
       char letter;
       const char QUIT = '!';

       Write("Enter an uppercase letter: ");
       userInput = ReadLine();
       letter = Convert.ToChar(userInput);

       while(letter != '!')
       {
           if(letter >= 'A' && letter <= 'Z')
           {
               WriteLine("OK");
           }
           else
               WriteLine("Sorry - that was not an uppercase letter");
               WriteLine("Enter an uppercase letter or {0} to quit", QUIT);
               userInput = ReadLine();
               letter = Convert.ToChar(userInput);    
       }
   }
}

代码按预期工作,我的“else”语句周围没有括号,但会用它们创建一个无限循环。只是想知道为什么会这样?

标签: c#loops

解决方案


如果您需要在其中执行多行,则需要在“else”之后包含花括号。否则它只会执行 else 条件之后的第一行。如果您需要在 else 中包含多行,则需要执行以下操作,

 else{
               WriteLine("Sorry - that was not an uppercase letter");
               WriteLine("Enter an uppercase letter or {0} to quit", QUIT);
               userInput = ReadLine();
               letter = Convert.ToChar(userInput);
} 

推荐阅读