如何解决函数在被调用时是否执行循环?
我正在尝试编写一个包含一些项目的程序(目前只有2个项目)。它在控制台中没有显示任何错误,但是当我尝试多次调用Main函数时,它不会执行内部循环。这是代码。
public static class Program
{
public static string input = Convert.ToString(Console.ReadLine());
public static int health = 100;
public static int energy = 100;
public static void Main()
{
Console.WriteLine("This is a game used for testing items");
Console.WriteLine("Would you like to use items or get them? (Typing in status shows the value of your health and energy)");
if (Program.input == "get")
{
Items.GetItems();
}
if (Program.input == "use")
{
ItemUser();
}
if (Program.input == "status")
{
StatusChecker();
}
}
public static void StatusChecker()
{
Console.WriteLine("Your health is " + Program.health);
Console.WriteLine("Your energy is " + Program.energy);
}
public static void ItemUser()
{
Console.WriteLine("What do you want to use?");
string useChecker = Convert.ToString(Console.ReadLine());
if (useChecker == "healthPotion")
{
health += 100;
Items.healthPotion--;
}
if (useChecker == "energyDrink")
{
energy += 100;
Items.energyDrink--;
}
}
}
public static class Items
{
public static int healthPotion = 0;
public static int energyDrink = 0;
public static void GetItems()
{
Console.WriteLine();
string itemChecker = Convert.ToString(Console.ReadLine());
if ( itemChecker == "health potion")
{
healthPotion++;
Program.Main();
}
if (itemChecker == "energy drink")
{
energyDrink++;
Program.Main();
}
}
因此,我希望程序在更新它们后获取值,但是在多次调用Main方法之后它只是停止了。谁能帮我? (我不太擅长编码,因此我无法编写出真正有效的代码)
解决方法
Main
方法内部没有任何循环,并且每次运行应用程序时都从头开始,每个变量都包含初始值。如果我正确理解了您要实现的目标,建议您编写这样的Main
方法进行循环,该循环将向用户询问命令,直到用户输入"quit"
:>
static void Main(string[] args)
{
Console.WriteLine("This is a game used for testing items");
while (true)
{
Console.WriteLine("Would you like to use items or get them? (Typing in status shows the value of your health and energy)");
string userAnswer = Console.ReadLine();
if (userAnswer == "quit") break;
if (userAnswer == "get")
{
Items.GetItems();
}
if (userAnswer == "use")
{
ItemUser();
}
if (userAnswer == "status")
{
StatusChecker();
}
}
}
我还注意到,当您调用ItemUser
方法时,您将更新Items
类的静态变量,但是在StatusChecker
方法中,您将写入{{1} }类。它们实际上是不同的,所以我认为在您的Program
方法中,您可能需要执行以下操作:
StatusChecker
,
您要在此处分配变量:
public static string input = Convert.ToString(Console.ReadLine());
因此,下次您调用“ Main”方法时,它将使用您在首次执行应用程序时键入的值。如果您希望它每次都问,则需要执行以下操作:
public static void Main()
{
input = Convert.ToString(Console.ReadLine());
...
}
另一件事是,如果您键入“ status”,它可以在第一次通话后退出。 问题3是这不是编写程序的“好”方式。应该在应用程序启动时执行Main方法,因为它是入口(更多关于here的信息)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。