当用户输入"!"
时,程序结束我不知道如何在循环中不断询问用户输入内容。
Console.WriteLine("Type a lowercase letter.");
char letter = char.Parse(Console.ReadLine());
while(letter !='!')
{
if(char.IsLower(letter))
{
Console.WriteLine("OK. Type another lowercase letter");
}
else
{
Console.WriteLine("Error");
}
letter = char.Parse(Console.ReadLine());
break;
}
答案 0 :(得分:4)
正如@Steve建议的那样,删除休息时间。当您处于循环中时,break
语句会立即将您带到该循环之外。
在你的情况下,你的while只循环一次。
在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/adbctzc4.aspx
Console.WriteLine("Type a lowercase letter.");
char letter;
Char.TryParse(Console.ReadLine(), out letter);
while (letter != '!')
{
if (char.IsLower(letter))
{
Console.WriteLine("OK. Type another lowercase letter");
}
else
{
Console.WriteLine("Error");
}
Char.TryParse(Console.ReadLine(), out letter);
}
将Parse
更改为TryParse
,因为您可以自行处理错误。好吧,您可以使用Try ... Catch包围Parse
,但异常很慢。
Why is throwing exceptions so slow?
答案 1 :(得分:3)
看起来你正在尝试学习一些基本的C#技术。所以另一个做你所说的例子 - 用不同的范例:
static void Main(string[] args)
{
var printout = new string[] { "Type a lowercase letter.", "OK. Type another lowercase letter", "Error" };
Console.WriteLine(printout[0]);
var sequance = SequenceOf(() => (Console.ReadLine() + " ")[0])
.TakeWhile(x => x != '!');
foreach (var item in sequance)
{
Console.WriteLine(printout[char.IsLower(item) ? 1 : 2]);
}
}
public static IEnumerable<T> SequenceOf<T>(Func<T> generator)
{
while (true)
{
yield return generator();
}
}
一旦你对这个范例感到满意 - 在我看来它会使代码更易读,并且阅读它的方式是:
我的一些选择的解释
希望这能让你找到你想去的地方。
玩得开心。