[英]running function based on user input in C# console application
我正在嘗試運行一個控制台應用程序,該應用程序將允許用戶選擇他們想要在PC上運行的作業類型,並且他們的響應將轉換為程序運行的功能。 現在的編寫方式是,當用戶輸入除4以外的其他選項時,該程序將鎖定並且不允許任何其他操作,這將成功關閉程序。
static void Main(string[] args)
{
int userInput = 0;
DisplayMenu();
do
{
if (userInput == 1)
{
QuickClean();
}
else if (userInput == 2)
{
DeepClean();
}
else if (userInput == 3)
{
SuperClean();
}
} while (userInput != 4);
}
static public int DisplayMenu()
{
Console.WriteLine("");
Console.WriteLine();
Console.WriteLine("1. Quick Clean");
Console.WriteLine("2. Deep Clean");
Console.WriteLine("3. Super Clean (admin needed)");
Console.WriteLine("4. exit");
var result = Console.ReadLine();
return Convert.ToInt32(result);
}
static void QuickClean()
{
Console.WriteLine("quickclean");
Console.ReadLine();
}
static void DeepClean()
{
Console.WriteLine("deepclean");
Console.ReadLine();
}
static void SuperClean()
{
Console.WriteLine("superclean");
Console.ReadLine();
}
DisplayMenu方法返回用戶選擇的內容,但不會將此返回值分配給usermenu局部變量。
如您現在所寫,您只需要輸入一次,然后進入循環,而無需將局部變量usermenu設置為用戶選擇,因此當到達測試退出條件的時間並且循環進入無窮大時,它仍然為零。條件。
您需要在循環內移動對DisplayMenu的調用,並將返回值分配給usermenu ,以便您的用戶可以再次看到菜單並輸入其他選項,然后可以執行所需的操作。
static void Main(string[] args)
{
int userInput = 0;
do
{
userInput = DisplayMenu();
if (userInput == 1)
{
QuickClean();
}
....
} while(userInput != 4)
}
我還建議更改DisplayMenu中的代碼,並避免使用Convert.ToInt32來解析用戶輸入。 如果用戶未輸入數字,則Convert.ToInt32將使程序崩潰。 而是使用Int32.TryParse
static public int DisplayMenu()
{
Console.Clear();
while(true)
{
Console.WriteLine("");
Console.WriteLine();
Console.WriteLine("1. Quick Clean");
Console.WriteLine("2. Deep Clean");
Console.WriteLine("3. Super Clean (admin needed)");
Console.WriteLine("4. exit");
int result;
if(Int32.TryParse(Console.ReadLine(), out result))
return result;
else
Console.WriteLine("Please enter a number");
}
}
您不在任何地方存儲返回的值。 userInput
DisplayMenu()
后, userInput
仍為0,這就是為什么在do-while
進入infite循環的原因。
do{
int userInput = DisplayMenu();
[...]
} while (userInput != 4)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.