当使用用户输入(int)作为多个函数的链接时避免崩溃的方法
本文关键字:链接 函数 方法 崩溃 用户 输入 int | 更新日期: 2023-09-27 18:06:00
我找不到一个明确的答案,如何分配用户输入在其他地方可用作为一个整数,而不会因无效的键输入而使程序崩溃。我也不确定是否将输入设置为整数是一个好主意,因为这是我所知道的唯一方法。下面是代码:
int atkchoice = Convert.ToInt32 (Console.ReadLine());
下面是我想如何使用输入作为一个整数:
if (atkchoice == 1)
{
如果使用Convert.ToInt32(),如果输入不是数字,可能会得到异常。使用TryParse()方法更安全。
int atkchoice;
do
{
// repeat until input is a number
Console.WriteLine("Please input a number! ");
} while (!int.TryParse(Console.ReadLine(), out atkchoice));
Console.WriteLine("You entered {0}", atkchoice);
如果您想验证输入是否在一组数字中,您可以创建一个用户选择的枚举,然后检查输入是否正确。使用枚举。
enum UserChoiceEnum
{
Choice1 = 1,
Choice2,
Choice3
}
void Main()
{
int atkchoice;
do
{
do
{
// repeat until input is a number
Console.WriteLine("Please input a number! ");
} while (!int.TryParse(Console.ReadLine(), out atkchoice));
} while (!Enum.IsDefined(typeof(UserChoiceEnum), atkchoice));
Console.WriteLine("You entered {0}", atkchoice);
}
请参考这个(链接到stackoverflow中另一个类似的问题)c# char to int。我想它会回答你的大部分疑问。(对于你上面的评论-"谢谢你这工作完美,但现在我很好奇,如果我可以设置它以同样的方式响应其他数字的char输入,允许用户只使用1 2和3。什么方法是最好的?")
如果您有多个值要检查,您可以将它们添加到List
并检查该列表是否包含您的值(使用Contains
方法)。您可以循环使用while
,直到输入有效。
之后,由于您的期望值都是数字,因此您可以使用Convert.ToInt32
安全地将输入转换为int
。
public static void Main(string[] args)
{
IEnumerable<string> allowedInputs = new[] {"1", "2", "3"};
string userInput = "";
while (!allowedInputs.Contains(userInput))
{
Console.WriteLine("Enter 1, 2 or 3");
userInput = Console.ReadLine();
}
int atkChoice = Convert.ToInt32(userInput);
//Do your if conditions
}