c#

时间:2019-02-24 20:08:01

标签: c#

我正在学习C#编程,但偶然发现了我的部分代码。我使用Visual Studio2017。

我开发了一个神秘的数字游戏,我想确保重播,但我不知道该怎么做。

我希望当我们按O或N时再次播放,否则退出,但是我不能。 Scanf和printf不起作用。谢谢您的下一个答案。

char play;
bool isvalid = true;

void Number() 
{
    //Code...
    While(isvalid); 
    {
         Console.WriteLine("want to play again o/n "); 
         if(play == 'o') 
         {
              Number();
          }
          else 
          {
               play == 'n';
          }
    }
}

Number();

1 个答案:

答案 0 :(得分:0)

我在粘贴的代码中看到了几个问题:

  • 首先,在while循环后有一个分号。因此,大括号中的行不会像您期望的那样一遍又一遍地执行。

  • 第二个-您没有填充play变量。您应该使用 Console.Readline (可以输入任何字符串,然后按Enter键以显示输入提示)或 Console.Read (仅读取1个字符)

  • 第三-您一次又一次调用Number函数-如果您玩游戏足够长时间,则会导致堆栈溢出异常。

我从您的代码中了解到,如果用户继续输入'o'字符,则希望一次又一次执行一些代码。否则,您想停止该循环。

代码为:

void Number() 
{
    //Code...

    While(isvalid); 
    {
         Console.WriteLine("want to play again o/n "); 
         play = Console.Read();

          if(!string.IsNullOrEmpty(play) && play.Equals('o', CultureInfo.InvariantCulture) 
          {
              /////// Some code you want to execute;
          }
          else 
          {
               ////// Some code you want to execute if user enters anything other than 'o'.

                ////// If you want to stop loop, set isValid = false; OR use break statement
          }
    }
}

我知道此答案可能无法完全解决您的问题。 希望这可以帮助您了解应该编写什么代码。