【发布时间】:2019-04-01 15:29:45
【问题描述】:
用户输入必须等于 5 个不同字符串之一,否则用户必须再次输入,直到输入等于 5 个字符串之一。
我写了一些代码,如果第一次输入的输入等于 5 个字符串中的一个,它会按照应有的方式工作,如果不是,程序就会陷入无限循环。
novaDrzava.PrevladujocaVera = Console.ReadLine();
var vera = novaDrzava.PrevladujocaVera;
var prvacrkaVera = vera.Substring(0, 1);
var ostaloVera = vera.Substring(1, vera.Length - 1);
prvacrkaVera = prvacrkaVera.ToUpper();
ostaloVera = ostaloVera.ToLower();
vera = prvacrkaVera + ostaloVera;
while (true)
{
if(vera == "Krščanstvo")
{
break;
}
if (vera == "Krscanstvo")
{
break;
}
if (vera == "Hinduizem")
{
break;
}
if (vera == "Islam")
{
break;
}
if (vera == "Budizem")
{
break;
}
Console.WriteLine("Vnesite ustrezno vero");
vera = Console.ReadLine();
vera = prvacrkaVera + ostaloVera;
}
【问题讨论】:
-
好吧,你的
Console.ReadLine在循环之外,所以它自然不会改变 - 这会导致无限循环。 -
@Quibblesome 是的,但是 get 会立即被覆盖到之前的值
-
在
vera = Console.Readline()之后,添加这4行:var prvacrkaVera = vera.Substring(0, 1); var ostaloVera = vera.Substring(1, vera.Length - 1); prvacrkaVera = prvacrkaVera.ToUpper(); ostaloVera = ostaloVera.ToLower(); -
不要重复使用
if语句,而是查看stackoverflow.com/questions/14781857/… 并创建一个包含您可接受值的字符串集合,然后使用IEnumerable<string>.Contains来确定它们是否合适。跨度>
标签: c#