gpt4 book ai didi

c# - 输出错误信息后重启while循环

转载 作者:太空宇宙 更新时间:2023-11-03 12:02:40 24 4
gpt4 key购买 nike

问题:如何重新启动以下代码块?我的想法是,如果您输入一个将返回错误消息的字符。循环的条件是什么?

string r_operation;
Console.Write("\tBitte geben Sie ihre Rechenoperation ein: ");
r_operation = Console.ReadLine();
-------------

while (?r_operation = Console.ReadLine())
{
Console.WriteLine("\tUngültige Eingabe. Bitte geben Sie nur Zahlen ein!");
}

最佳答案

您可以将现有代码转换为使用 int.TryParse 方法,该方法返回一个 bool 指示输入字符串是否为有效数字(并设置一个 out 参数到转换后的值):

Console.Write("\tBitte geben Sie ihre Rechenoperation ein: ");
string r_operation = Console.ReadLine();
int result = 0;

while (!int.TryParse(r_operation, out result))
{
Console.WriteLine("\tUngültige Eingabe. Bitte geben Sie nur Zahlen ein!");
Console.Write("\tBitte geben Sie ihre Rechenoperation ein: ");
r_operation = Console.ReadLine();
}

// When we exit the while loop, we know that 'r_operation' is a number,
// and it's value is stored as an integer in 'result'

另一种方法是将从用户那里获取强类型数字的过程封装到一个方法中。这是我使用的一个:

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);
}

使用这些辅助方法,您的代码可以简化为:

int operation = GetIntFromUser("\tBitte geben Sie ihre Rechenoperation ein: ");

如果您想添加一些额外的约束,辅助方法还接受一个 validator 函数(它接受一个 int 并返回一个 bool 指示 int 是否有效)。所以如果你想将数字限制在 15 之间,你可以这样做:

var result = GetIntFromUser("Enter a number from 1 to 5: ", i => i > 0 && i < 6);

关于c# - 输出错误信息后重启while循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56383196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com