C# 为什么';我的while循环不工作吗?有人能告诉我错误消息是如何工作的吗?
如何重新启动此代码块?我的想法是,如果您输入一个字符,它将返回一条错误消息。循环的条件是什么C# 为什么';我的while循环不工作吗?有人能告诉我错误消息是如何工作的吗?,c#,if-statement,while-loop,application-restart,C#,If Statement,While Loop,Application Restart,如何重新启动此代码块?我的想法是,如果您输入一个字符,它将返回一条错误消息。循环的条件是什么 字符串r\u操作; Console.Write(“\t写入重新操作ein:”); r_operation=Console.ReadLine(); ------------- 而(?r_operation=Console.ReadLine()) { Console.WriteLine(“\tUngültige Eingabe.bite geben Sie nur Zahlen ein!”); } 您可以将
字符串r\u操作;
Console.Write(“\t写入重新操作ein:”);
r_operation=Console.ReadLine();
-------------
而(?r_operation=Console.ReadLine())
{
Console.WriteLine(“\tUngültige Eingabe.bite geben Sie nur Zahlen ein!”);
}
您可以将现有代码转换为使用int.TryParse
方法,该方法返回一个bool
,指示输入字符串是否为有效数字(并将out
参数设置为转换后的值):
另一种方法是将从用户获取强类型数字的过程封装到方法中。我用的是:
private static int GetIntFromUser(string prompt, Func<int, bool> validator = null)
{
int result;
var cursorTop = Console.CursorTop;
do
{
ClearSpecificLineAndWrite(cursorTop, prompt);
} while (!int.TryParse(Console.ReadLine(), out result) ||
!(validator?.Invoke(result) ?? true));
return result;
}
private static void ClearSpecificLineAndWrite(int cursorTop, string message)
{
Console.SetCursorPosition(0, cursorTop);
Console.Write(new string(' ', Console.WindowWidth));
Console.SetCursorPosition(0, cursorTop);
Console.Write(message);
}
如果您想添加一些额外的约束,helper方法还需要一个validator
函数(它接受int
并返回一个bool
,指示int
是否有效)。因此,如果您想将数字限制为从1
到5
,可以执行以下操作:
var result = GetIntFromUser("Enter a number from 1 to 5: ", i => i > 0 && i < 6);
var result=GetIntFromUser(“输入一个从1到5的数字:”,i=>i>0&&i<6);
int operation = GetIntFromUser("\tBitte geben Sie ihre Rechenoperation ein: ");
var result = GetIntFromUser("Enter a number from 1 to 5: ", i => i > 0 && i < 6);