C# 代码在调用方法后重复用户输入提示

本文关键字:复用 用户 输入 提示 代码 调用 方法 | 更新日期: 2023-09-27 18:33:32

我正在尝试制作一个程序,要求用户输入,然后在用户选择对他们的选择不满意时提供重新启动的选项。如果他们选择选项,然后在最后选择"是",则程序可以完美运行,但是如果他们选择"否",请再次选择属性,然后选择"是",系统会提示用户选择是否再次接受。该程序的内容如下:

有你的属性点!

你接受这些吗?键入 1 表示是,键入 2 表示否。如果否,您可以再次选择:

1

你接受这些吗?键入 1 表示是,键入 2 表示否。如果否,您可以再次选择:

1

按任意键继续...

这是代码:

       while (true)
        {
            Console.Write("Do you accept these? Type 1 for Yes, Type 2 for No. If No you can choose again:  ");
            areYouHappyWithChoices = Console.ReadLine();
            if (!UInt32.TryParse(areYouHappyWithChoices, out validChoices))
                Console.WriteLine("Please try again. Enter 1 for Yes and 2 for No");
            else if (validChoices > 2 || validChoices < 1)
                Console.WriteLine("Please try again. Enter 1 for Yes and 2 for No");
            else if (areYouHappyWithChoices == "2")
                chooseAttributePoints(); //this method contains the whole routine
            else
                break;
        }

C# 代码在调用方法后重复用户输入提示

所以,我测试了你的代码,它对我很好用。您的chooseAttributePoints()方法中似乎有一个额外的Console.ReadLine(),因此您必须在调用chooseAttributePoints()后输入两次您的选择。请检查以确保这是问题所在。

言论:

我还对您的代码进行了一些重组,因此它更具可读性并且冗余更少。

int validChoices;
do
{
  Console.WriteLine("do some logic ......"); // replace this line with your chooseAttributePoints() method ...
  Console.Write("Do you accept these? Type 1 for Yes, Type 2 for No. If No you can choose again:  ");
  // read input until user gets it right and enters a valid number ...
  var areYouHappyWithChoices = Console.ReadLine();
  while (!int.TryParse(areYouHappyWithChoices, out validChoices) || validChoices < 1 || validChoices > 2)
  {
    Console.WriteLine("Please try again. Enter 1 for Yes and 2 for No");
    areYouHappyWithChoices = Console.ReadLine();
  }
} while (validChoices != 1);