c# - 我怎么写这个,所以程序在用户输入他的名字后重新启动
问题描述
该程序要求一个名称,我希望程序在生成一个随机数后询问用户是否想再次这样做。如果用户按下 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;
}
解决方案
您可以在代码中修复一些问题。
- 如果用户没有输入“yes”(如果他们输入“yes” ,则循环的退出条件(您调用的地方
break;
)应该是。 - 如果您只想询问用户名一次,请将该部分排除在循环之外
- 您应该只声明一个实例,
Random
而不是在每次循环迭代时实例化一个新实例,因此我们也可以将其从循环中取出。 - 您可以使用,因为条件都是独占的 - 如果我们达到一个
else if
,则无需处理所有其余条件true
- 您可以使用字符串插值使输出字符串更具可读性
- 我们可以允许用户输入“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;
}