我正在开发一个需要用户输入整数的程序。如何阻止用户输入非数字值?我尝试使用IsNumeric()函数,但在使用它之前出现错误。在我可以调用IsNumeric()函数之前,我在console.read上收到错误。这是我的代码:
Dim num As Integer
Console.Write("enter num:")
num = Console.ReadLine
If IsNumeric(num) = True Then
Console.WriteLine("valid. num = " & num)
Else
Console.WriteLine("invalid")
End If
非常感谢任何帮助。
答案 0 :(得分:8)
试试这个:
Dim num As Integer
Console.Write("enter num:")
Dim input = Console.ReadLine
If Integer.TryParse(input, num) Then
Console.WriteLine("valid. num = " & num)
Else
Console.WriteLine("invalid")
End If
答案 1 :(得分:5)
这正是Integer.TryParse()
设计的情况。如果您测试的字符串无法转换为整数,则TryParse
将返回false。
答案 2 :(得分:1)
而是尝试类似:
Dim num as Integer
Console.Write("Enter num: ")
While (Not (Integer.TryParse(num, Console.ReadLine())))
Console.WriteLine("Please enter an Integer only: ")
End While
TryParse方法尝试解析输入值,并在无法将值解析为所述类型时返回false。上面的代码会询问用于输入的内容,直到它们输入一个整数。
答案 3 :(得分:0)
您可以读取字符串,然后尝试将其转换为整数。捕获转换产生的任何异常,以处理非数字输入。
答案 4 :(得分:0)
在C#抱歉......
using System;
class Program
{
static void Main(string[] args)
{
int a = GetNumericInput();
Console.WriteLine("Success, number {0} entered!",a);
Console.Read();
}
private static int GetNumericInput()
{
int number;
string input;
bool first = true;
do
{
if (!first)
{
Console.WriteLine("Invalid Number, try again");
}
Console.WriteLine("enter a number");
input = Console.ReadLine();
first = false;
} while (!int.TryParse(input, out number));
return number;
}
}