这是一个数据库程序,通过输入数字0-7,您可以对数据文件执行不同的操作。每当我尝试通过输入0来退出时,它会再次通过循环发送给我,然后一旦我输入另一个0它就会退出。
static void Main(string[] args)
{
do
{
DoAQuery();
Console.WriteLine();
} while (DoAQuery() != "0");
}
static string DoAQuery()
{
string prompts = "0: Quit \n" +
"1: Who wrote <song name> \n" +
"2: What does <musician name> play \n" +
"3: What songs were written by <composer> \n" +
"4: Who plays in the <band name> \n" +
"5: Who's recorded <song name> \n" +
"6: What songs has the <band name> recorded \n" +
"7: Has the <band name> recorded <song name> \n";
Console.WriteLine(prompts);
Console.Write("Enter a command number: ");
string cmd = Console.ReadLine();
switch (cmd)
{
case "0" :
return cmd;
case "1" :
Case1();
return cmd;
case "2" :
Case2();
return cmd;
case "3":
Case3();
return cmd;
case "4":
Case4();
return cmd;
case "5":
Case5();
return cmd;
case "6":
Case6();
return cmd;
case "7":
Case7();
return cmd;
default:
Console.WriteLine("!!Command must be a number 0-7!!");
return "1";
}
这是打印的内容
loaded 8 tunes
0: Quit
1: Who wrote <song name>
2: What does <musician name> play
3: What songs were written by <composer>
4: Who plays in the <band name>
5: Who's recorded <song name>
6: What songs has the <band name> recorded
7: Has the <band name> recorded <song name>
Enter a command number: 0
0: Quit
1: Who wrote <song name>
2: What does <musician name> play
3: What songs were written by <composer>
4: Who plays in the <band name>
5: Who's recorded <song name>
6: What songs has the <band name> recorded
7: Has the <band name> recorded <song name>
Enter a command number: 0
基本上我只想输入零来立即退出程序。提前谢谢!!
答案 0 :(得分:4)
这种情况正在发生,因为您在代码中两次调用DoAQuery()
。
你可以用这种方式重构它:
string response;
do
{
response = DoAQuery();
Console.WriteLine();
} while (response != "0");
因此,您可以捕获用户选择一次,然后多次使用它。