我这里有一种方法,允许用户输入除999以外的任何数字。但是当用户输入负数或字母时,我不知道如何创建验证。
static int EnterScores(double[] scores, int maxScores)
{
double userInput;
int count = 0;
while (count < maxScores)
{
Console.Write("Enter a score(or 999 to quit): ");
userInput = double.Parse(Console.ReadLine());
if (userInput == 999 || userInput < 0)
break;
scores[count++] = userInput;
}
return count;
}
答案 0 :(得分:1)
您可以使用double.TryParse。如果可以将字符串转换为float,则将为true
...
var str = Console.ReadLine();
if (double.TryParse(str, out userInput)){
if (userInput == 999 || userInput < 0)
break;
scores[count++] = userInput;
}
...
答案 1 :(得分:0)
将userInput
== 999和userInput
<0的测试分开,像这样:
...
if (userInput == 999)
{
break;
}
else if (userInput < 0)
{
Console.WriteLine("Invalid input");
}
else
{
scores[count++] = userInput;
}
...
答案 2 :(得分:0)
如果用户输入字母或无法转换为double
的内容,则这段代码double.TryParse
将抛出exception
,并且程序将失败。
因此,您应该在此处使用try-catch
块:
try
{
userInput = double.Parse(Console.ReadLine());
if (userInput == 999)
{
break;
}
else if (userInput < 0)
{
Console.WriteLine("Invalid input");
}
else
{
scores[count++] = userInput;
}
}
catch(Exception e) // will take care of letters
{
Console.WriteLine("You enter an Invalid input !"):
}