C# 函数调用时是否执行循环?
我正在尝试编写一个由一些项目组成的程序(目前只有两个项目)。它在控制台中没有显示任何错误,但是当我尝试多次调用Main函数时,它不会执行内部的循环。顺便说一下,这是代码C# 函数调用时是否执行循环?,c#,function,loops,C#,Function,Loops,我正在尝试编写一个由一些项目组成的程序(目前只有两个项目)。它在控制台中没有显示任何错误,但是当我尝试多次调用Main函数时,它不会执行内部的循环。顺便说一下,这是代码 public static class Program { public static string input = Convert.ToString(Console.ReadLine()); public static int health = 100; public static int ener
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”
:
我还注意到,当您调用ItemUser
方法时,您会更新Items
类的静态变量,但在StatusChecker
方法中,您会写入程序
类的控制台变量。它们实际上是不同的,因此我认为在您的StatusChecker
方法中,您可能需要执行以下操作:
public static void StatusChecker()
{
Console.WriteLine("Your health is " + Items.health);
Console.WriteLine("Your energy is " + Items.energy);
}
您正在此处分配一个变量:
public static string input = Convert.ToString(Console.ReadLine());
因此,下次调用“Main”方法时,它将使用第一次执行应用程序时键入的值。如果你想让它每次都问你,你需要这样做:
public static void Main()
{
input = Convert.ToString(Console.ReadLine());
...
}
另一件事是,如果您输入“状态”,它可以在第一次呼叫后退出。
第三个问题是,这不是编写程序的“好”方法。Main方法应该在应用程序启动时执行,因为它是入口点(更多信息)。没有任何循环,只有条件。你是如何执行程序的?没有对函数的“特殊处理”,不管它们是否包含循环。你的函数不包含循环。你没有循环,所以你需要展示你的实际目标,这样人们才能帮助你。此外,
main()
表示您的程序;没有从外部读取/写入数据,您的数据在您的程序中是硬编码的,因此每次调用您的程序时,您只需从头开始重新启动它,即获得相同的结果![查看]避免将用户输入ReadLine()用于设置静态输入字段。将行[input=Convert.ToString(Console.ReadLine());]移动到Main()过程,查看GetItems()的结果会发生什么
public static void Main()
{
input = Convert.ToString(Console.ReadLine());
...
}