首页 > 解决方案 > 有一种更好的方法可以避免在 Console.ReadLine 中输入空值,而不是 if 语句

问题描述

到目前为止,如果代码一切正常,但有更好的方法可以避免在 Console.ReadLine 中输入空值,我已经尝试过 if 语句,但代码最终看起来像一团糟。

class ColocarMoedas
{
    public static void Colocar(MaquinaUsuario user)
    {
        int m1, m5, m10, m25, m50;

        Console.Clear();
        Console.WriteLine("/////////////////////////MOEDAS////////////////////////////");
        Console.Write("1 Centavo: ");
        m1 = int.Parse(Console.ReadLine());

        Console.Write("5 Centavo: ");
        m5 = int.Parse(Console.ReadLine());

        Console.Write("10 Centavo: ");
        m10 = int.Parse(Console.ReadLine());

        Console.Write("25 Centavo: ");
        m25 = int.Parse(Console.ReadLine());

        Console.Write("50 Centavo: ");
        m50 = int.Parse(Console.ReadLine());

        user.Adicionar(m1, m5, m10, m25, m50);

        Console.Clear();
    }
}

标签: c#visual-studioconsole-application

解决方案


有一种更好的方法可以避免使用空输入Console.ReadLine 而不是 if 语句

答案是肯定的。

尽管值得注意的是,用户输入可能出错的地方不止null. 事实上null非常罕见,这是您需要担心的所有其他问题。

验证用户数字输入惯用的方法是使用样式方法,当值无法解析时返回bool ,并通过参数 when返回TryParseouttrue

Int32.TryParse Method

将数字的字符串表示形式转换为其等效的 32 位有符号整数。返回值指示操作是否成功。

您可以通过使用验证循环更进一步

int m1 = 0;
while (!int.TryParse(Console.ReadLine(), out m1))
   Console.WriteLine("You hard one job! Now try again");

基本上上面说了,虽然数字不能转换成整数,包括拼写错误、空输入和Ctrl+c(null),但是写一条消息。


推荐阅读