Visual Studio 当我得到一个不是数字的输入时,我如何发送错误?[C#]

wfypjpf4  于 2023-10-23  发布在  C#
关注(0)|答案(4)|浏览(141)

我希望在客户端写入符号或字母时出现错误

int n = 0;
string ent;

ent = Console.ReadLine();
n = int.Parse(ent);

if (n.GetType() != typeof(int)) {
    Console.WriteLine("Must be a number");
}
qmelpv7a

qmelpv7a1#

不完全清楚你要做什么,但如果它能够解析输入,这将在任何输入上提示:

while ( true )
{
    bool isValid = int.TryParse( Console.ReadLine(), out int parsedInput );

    if ( !isValid )
    {
        Console.WriteLine( "Must be a number" );

        continue;
    }

    Console.WriteLine( $"Your input was: {parsedInput}" );
}

请注意,这段代码是用于演示目的,使用while循环可以,并会导致意外的行为。

wfauudbj

wfauudbj2#

看看官方文档和示例用法:
要么按照官方文档中的建议将int.Parse Package 在try-catch块中,要么在这里使用int.TryParse()
尝试catch示例:

int n = 0;
string ent;

ent = Console.ReadLine();
try {
    n = int.Parse(ent);
} catch (FormatException) {
    Console.WriteLine("{0}: Must be a number", ent);
}
kwvwclae

kwvwclae3#

我认为一个好的解决方案是使用int.TryParse。顾名思义,它试图将给定的值转换为int,并返回一个布尔值true或false,指示是否成功。它还接收一个out参数,如果转换顺利,最终解析的值将存储在其中。它看起来像这样:

int n = 0;
string ent;
bool validNumber = false;

while(!validNumber){
    ent = Console.ReadLine();
    if(int.TryParse(ent, out n))
    {
        validNumber = true;
    }
    else
    {
        Console.WriteLine("Must be a number");
    }
}

我还添加了一个while循环,以不断要求一个有效的数字。

wnvonmuf

wnvonmuf4#

你可以在你的字段中使用Regex进行任何你想要的验证。

相关问题