Dwa*_*dar 3 .net c# if-statement string-comparison toupper
嗨伙计们在循环中实现Y/N或y/n时遇到一些麻烦.我的设计方式是用户可以在循环中使用Y和N的大小写字母作为答案.顺便说一句这里是我的代码,但似乎无法使其工作:
do
{
Console.WriteLine("\nSelect additional topping/s\n");
Console.WriteLine("1 - Extra meat: 200");
Console.WriteLine("2 - Extra cheese: 100");
Console.WriteLine("3 - Extra veggies: 80\n");
int selectedTopping = Convert.ToInt32(Console.ReadLine());
switch (selectedTopping)
{
case 1:
pizza = new MeatToppings(pizza);
break;
case 2:
pizza = new CheeseToppings(pizza);
break;
case 3:
pizza = new VeggieToppings(pizza);
break;
default:
break;
}
Console.WriteLine("\nAdd more toppings? Y/N");
}
while ((Console.ReadLine() == "Y") || (Console.ReadLine() == "y"));
Run Code Online (Sandbox Code Playgroud)
while ((Console.ReadLine() == "Y") || (Console.ReadLine() == "y"));
Run Code Online (Sandbox Code Playgroud)
由于你打ReadLine()两次电话,这将会读取2个不同的行.您需要调用一次并保存该值.
您可以使用 ToUpper
while ((Console.ReadLine().ToUpper() == "Y") );
Run Code Online (Sandbox Code Playgroud)
尝试使用String.Equals和StringComparison:
String.Equals(Console.ReadLine(), "y", StringComparison.CurrentCultureIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
来自MSDN:
CurrentCultureIgnoreCase:使用区分文化的排序规则,当前文化以及忽略要比较的字符串的大小写来比较字符串.
OrdinalIgnoreCase:使用序数排序规则比较字符串并忽略要比较的字符串的大小写.
要检查Y或y忽略大小写,您应该使用string.Equals(string,StringComparison)重载.
while (Console.ReadLine().Equals("Y", StringComparison.InvariantCultureIgnoreCase));
Run Code Online (Sandbox Code Playgroud)
请参阅在土耳其İ问题和为什么要照顾使用前ToUpper或ToLower与忽略大小写字符串比较.
您当前的代码正在从控制台读取两行,这就是您的代码为第二个值保留的原因.
| 归档时间: |
|
| 查看次数: |
7266 次 |
| 最近记录: |