此代码当前处理数字的输入,无论是更大还是更小,或者在可接受的范围内,但是,如果输入的任何数字都是非处理的异常,则程序崩溃错误.System.FormatException:'输入字符串格式不正确。“如果这有用的话,这就是错误。
using System;
class Program
{
static void PrintHello(int NumberOfTimes)
{
if (NumberOfTimes > 1 && NumberOfTimes < 11)
{
for (int Counter = 0; Counter < NumberOfTimes; Counter++)
{
Console.WriteLine("Hello.");
}
}
else { Console.WriteLine("Error, please enter a number between 1 and 10"); }
}
static void Main(string[] args)
{
int myNumber = 1;
while (myNumber != 0)
{
Console.WriteLine("Enter a number between 1 and 10, or 0 to stop");
myNumber = Convert.ToInt16(Console.ReadLine());
PrintHello(myNumber);
}
}
}
答案 0 :(得分:3)
只需将Convert.ToInt16(...)
替换为以下内容:
var input = Console.ReadLine();
if (int.TryParse(input, out myNumber))
{
PrintHello(myNumber);
}
如果给定的输入可以解析为整数,则int.TryParse - 方法将返回true,否则返回false。如果它可以解析输入,则该值将存储在第二个参数中(标记为out。
编辑: 根据经验:永远不要直接解析用户输入(特别是当您使用字符串作为输入处理时)。检查输入是否有效。
答案 1 :(得分:-1)
解析输入字符串时可以使用try和catch,如下所示:
try
{
int NumberOfTimes = int.Parse(Console.ReadLine());
}
catch(System.FormatException)
{
Console.WriteLine("Incorrect format of the user's input");
}