【问题标题】:How do I make a text box accept only int between 1 to 6 [duplicate]如何使文本框仅接受 1 到 6 之间的 int [重复]
【发布时间】:2019-02-07 14:01:13
【问题描述】:

几个小时以来,我一直在试图弄清楚如何做到这一点。如何让程序只接受 1 到 6 之间的值,否则它会崩溃?

"用户只输入可接受的学时——输入的每个学时都是 0 到 6 之间的整数,仅此而已。在这种情况下,任何无效或错误或空的输入数据都会导致运行时错误,这是预期的并且很好。”

这是我尝试过的方法之一,但没有奏效。我需要找出如何使程序只给出运行时错误。我不需要一直要求输入或显示“错误”消息

creditHours = double.Parse(tb_credit.Text);

if (creditHours != 1 || creditHours != 2 || creditHours != 3 || 
    creditHours != 4 || creditHours != 5 || creditHours != 6)
{ 
    creditHours = double.Parse(tb_credit.Text); 
}

【问题讨论】:

  • 这是 asp.net。使用 RangeValidator。

标签: c# asp.net .net c#-4.0


【解决方案1】:

Mehdi 是正确的,但这就是您的代码不起作用的原因。

假设用户输入了“2”,那么

if(creditHours != 1 || ...)
{

}

会是真的,因为 creditHours 不等于 1,而是 2。但是假设用户输入“9”,if(creditHours != 1 || ...) 仍然会再次为真,因为 creditHours 不等于 1,而是 9。因此,有效值和无效值都会产生相同的结果。要更正您的代码,您需要if(creditHours == 1 || ...)

Mehdi 的代码要简单得多,但我喜欢写;

if(0 <= creditHours && creditHours <= 6)
{

}

认为它只是读起来更好。

【讨论】:

    【解决方案2】:
    if (creditHours < 0 || creditHours > 6)
    { 
        throw new Exception("Credit hours can only be between 0 and 6."); 
    }
    

    【讨论】:

    • 感谢您的回答。 throw new Exception 究竟做了什么?我是 C# 新手
    • 它会引发运行时错误。请谷歌尝试c#中的catch和异常。
    【解决方案3】:
    1. 您的条件不正确,因为如果输入数字是 7,那么条件 if(creditHours != 1 || ...) 将返回 true强>。 => 如果 (creditHours > 0 && creditHours

    2. ,您应该通过此条件进行验证
    3. 如果用户输入了无效数字(例如:“abc123xyz”),则此代码将引发异常:creditHours = double.Parse(tb_credit.Text) => 你也应该使用 TryParse 来处理无效数字。

    请检查我的解决方案如下:

    if(!double.TryParse(tb_credit.Text, out var creditHours))
    {
        throw new Exception("Credit hours should be a numbers between 0 and 6.");
    }
    
    if (creditHours > 0 || creditHours < 6)
    {
        creditHours = double.Parse(tb_credit.Text);
    }
    
    throw new Exception("Credit hours should be a numbers between 0 and 6.")
    

    【讨论】:

    • 使用TryParse 的目的是首先避免异常。如果TrtParse 失败,为什么要抛出异常?
    猜你喜欢
    • 1970-01-01
    • 2013-01-26
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多