似乎不能循环switch语句
本文关键字:switch 语句 循环 不能 | 更新日期: 2023-09-27 18:10:58
我要做的是,在这个人输入他们的名字之后,问他们是否想再做一次,如果不想,点击n,然后退出程序。但我似乎不能让它工作。我试过添加一个退出案例,仍然没有。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestApp
{
class Program
{
static void Main()
{
Console.Write("Please enter your name: ");
string name = Console.ReadLine();
Test(name.ToLower());
Console.ReadLine();
}
static void Test(string name)
{
bool exit = true;
string answer = "";
do
{
switch (name)
{
case "name":
Console.WriteLine("Hello Name");
break;
case "name2":
Console.WriteLine("Hello Name2");
break;
}
Console.WriteLine("Would you like to enter a new name? y/n: ");
if (answer == "y")
exit = false;
else
exit = true;
}
while (exit == false);
}
}
}
您没有更改循环中的'answer'变量。您缺少一个Console.ReadLine() in循环。
Console.Write("Would you like to enter a new name? y/n: ");
answer = Console.ReadLine(); <----------- this was missing
exit = (answer == "y" || answer == "Y"); <------- this slight improvement
还应该在循环中读取名称,因为当exit为false时,您希望再次读取它。现在你一遍又一遍地检查同一个名字。
static void Test() <---- remove the name parameter
{
bool exit = true;
string answer = "";
do
{
Console.Write("Please enter your name: ");
string name = Console.ReadLine().ToLower(); <--- read name here
answer = Console.ReadLine();//你的代码中缺少了这一行
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestApp
{
class Program
{
static void Main()
{
Console.Write("Please enter your name: ");
string name = Console.ReadLine();
Test(name.ToLower());
Console.ReadLine();
}
static void Test(string name)
{
bool exit = true;
string answer = "";
do
{
switch (name)
{
case "name":
Console.WriteLine("Hello Name");
break;
case "name2":
Console.WriteLine("Hello Name2");
break;
}
Console.WriteLine("Would you like to enter a new name? y/n: ");
answer = Console.ReadLine(); // you're missing this line in your code.
if (answer == "y")
exit = false;
else
exit = true;
}
while (exit == false);
}
}
}
结合Hasan和Harsh的观点,这里有一个工作示例,似乎可以满足您的期望。
static void Test()
{
bool exit = true;
string answer = "";
do
{
Console.Write("Please enter your name: ");
string name = Console.ReadLine();
switch (name)
{
case "name":
Console.WriteLine("Hello Name");
break;
case "name2":
Console.WriteLine("Hello Name2");
break;
}
Console.WriteLine("Would you like to enter a new name? y/n: ");
answer = Console.ReadLine();
if (answer == "y")
exit = false;
else
exit = true;
}
while (!exit);
}
当然,如果您输入的名称不是"name1"或"name2",那么事情就开始变得奇怪了,因为您还没有真正定义在这种情况下想要发生什么。但是希望这能给你一个好的开始。