首页 > 解决方案 > 我怎么写这个,所以程序在用户输入他的名字后重新启动

问题描述

该程序要求一个名称,我希望程序在生成一个随机数后询问用户是否想再次这样做。如果用户按下 Y程序应该重新启动。

 while (true) { 
            Random rnd = new Random();
            int trust = rnd.Next(0, 100);            
            Console.WriteLine("Tell me your name");
            string name = Console.ReadLine();
            Console.WriteLine(name +" " + "is" + " " + trust + " " + "points `enter code here`trustworthy");



            if (trust <= 20)
            {
                Console.WriteLine("gtfo");
            }

            if (trust >= 21 && trust <= 50)
            {
                Console.WriteLine("not gonna tell you anything");
            }

            if (trust >= 50 && trust <= 70)
            {
                Console.WriteLine("not that trustworthy");
            }

            if (trust >= 71 && trust <= 90)
            {
                Console.WriteLine("quite trustworthy");
            }

            if (trust >= 91 && trust <= 100)
            {
                Console.WriteLine(" you are trustworthy");
            }
            Console.ReadKey();
            Console.WriteLine("\nAgain? (y/n)");
            if (Console.ReadLine().ToLower() != "yes")
                    break;
            }

标签: c#

解决方案


您可以在代码中修复一些问题。

  1. 如果用户没有输入“yes”(如果他们输入“yes” ,则循环的退出条件(您调用的地方break;)应该是。
  2. 如果您只想询问用户名一次,请将该部分排除在循环之外
  3. 您应该只声​​明一个实例,Random而不是在每次循环迭代时实例化一个新实例,因此我们也可以将其从循环中取出。
  4. 您可以使用,因为条件都是独占的 - 如果我们达到一个else if,则无需处理所有其余条件true
  5. 您可以使用字符串插值使输出字符串更具可读性
  6. 我们可以允许用户输入“y”而不是“yes”,方法是使用Console.ReadKey

这些实现的东西看起来像:

Console.WriteLine("Tell me your name");
string name = Console.ReadLine();
Random rnd = new Random();

while (true)
{
    int trust = rnd.Next(0, 100);
    Console.WriteLine($"{name} is {trust} points trustworthy");

    if (trust <= 20) Console.WriteLine("gtfo");
    else if (trust <= 50) Console.WriteLine("not gonna tell you anything");
    else if (trust <= 70) Console.WriteLine("not that trustworthy");
    else if (trust <= 90) Console.WriteLine("quite trustworthy");
    else Console.WriteLine("you are trustworthy");

    Console.WriteLine("\nAgain? (y/n)");

    if (Console.ReadKey().Key != ConsoleKey.Y) break;
}

推荐阅读