C# 代码跳过了询问用户Donald是否喝了药剂的部分
当它到达用户被问到问题的部分时,它跳过并关闭,甚至不在最后打印Donald的统计数据。我似乎不明白为什么,即使使用read键,它也不起作用C# 代码跳过了询问用户Donald是否喝了药剂的部分,c#,C#,当它到达用户被问到问题的部分时,它跳过并关闭,甚至不在最后打印Donald的统计数据。我似乎不明白为什么,即使使用read键,它也不起作用 using System; namespace ConsoleApp2 { class Donald { public static int Health = 100; public static int Damage = 50; public static int Speed = 15
using System;
namespace ConsoleApp2
{
class Donald
{
public static int Health = 100;
public static int Damage = 50;
public static int Speed = 15;
public static string Food;
public static string Potion;
}
class Program
{
static void Main(string[] args)
{
Console.Write("What will Donald eat?: ");
Donald.Food = Convert.ToString(Console.Read());
Console.ReadKey();
Console.Write("Will Donald drink a slow potion?: ");
Donald.Potion = Convert.ToString(Console.Read());
Console.ReadKey();
TakeDamage();
SlowDown();
PrintStats();
}
static void TakeDamage()
{
if (Donald.Food == "Turkey")
{
Donald.Health -= 15;
}
if (Donald.Food == "Steak")
{
Donald.Health += 15;
}
}
static void SlowDown()
{
if (Donald.Potion == "Yes")
{
Donald.Speed -= 50;
}
}
static void PrintStats()
{
Console.WriteLine(Donald.Speed);
Console.WriteLine(Donald.Potion);
Console.WriteLine(Donald.Health);
Console.WriteLine(Donald.Food);
Console.WriteLine(Donald.Damage);
}
}
}
请研究下面的代码以了解其不同之处 要等待用户输入,请使用
ReadKey
读取用户输入用户ReadLine
,还要注意,如果在程序结束时没有什么需要等待的,它将快速写入您的值并关闭,因为它会很快让您看到,因此您需要以某种方式停止它,再次ReadKey
将有帮助
Console.Write("What will Donald eat?: ");
Donald.Food = Console.ReadLine();
Console.Write("Will Donald drink a slow potion?: ");
Donald.Potion = Console.ReadLine();
TakeDamage();
SlowDown();
PrintStats();
Console.ReadKey();
更改代码,如下所示:
static void Main(string[] args)
{
Console.Write("What will Donald eat?: ");
Donald.Food = Console.ReadLine();
Console.Write("Will Donald drink a slow potion?: ");
Donald.Potion = Console.ReadLine();
TakeDamage();
SlowDown();
PrintStats();
// wait for user to exit
Console.ReadLine();
}
您还可以将Console.ReadKey()
或ReadLine()
放在这里:
static void PrintStats()
{
Console.WriteLine(Donald.Speed);
Console.WriteLine(Donald.Potion);
Console.WriteLine(Donald.Health);
Console.WriteLine(Donald.Food);
Console.WriteLine(Donald.Damage);
Console.ReadLine(); // ReadKey as this will be discarded.
}
Read和ReadLine的区别如下:
尝试在类和属性上设置公共访问权限,并从console.read切换到readline您知道console.read()返回int吗?你知道那个程序会打印一些东西,但不会在打印后等待并退出吗?将Read替换为ReadLine并删除ReadKey,然后在PrintStats之后放置一个ReadKey,多亏了这些帮助。我用ReadLine代替Read。