如何使文本框仅接受1到6之间的整数

时间:2018-09-02 04:49:22

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

几个小时以来,我一直在努力寻找方法。如何使程序仅接受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); 
}

3 个答案:

答案 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)
{

}

认为它读起来更好。

答案 1 :(得分:0)

if (creditHours < 0 || creditHours > 6)
{ 
    throw new Exception("Credit hours can only be between 0 and 6."); 
}

答案 2 :(得分:0)

  1. 您的条件不正确,因为如果输入数字为7,则条件 if(creditHours!= 1 || ...)将返回 true 。 =>如果(creditHours> 0 && creditHours <6)

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

请在下面检查我的解决方案:

std::string Shader::readFile(GLenum ShaderType)
{
    std::ifstream finV("shader.vert");
    std::ifstream finF("shader.frag");
    std::string content = "";
    if (ShaderType == GL_VERTEX_SHADER)
    {
        // If the file was opened successfully, continue
        if (finV)
        {
            while (finV)
            {
                std::string buffer = "";
                getline(finV, buffer);
                content += buffer + "\n";
            }
        }
    }
    else if (ShaderType == GL_FRAGMENT_SHADER)
    {
        if (finF)
        {
            while (finF)
            {
                std::string buffer = "";
                getline(finF, buffer);
                content += buffer + "\n";
            }
        }
    }
    finV.close();
    finF.close();
    std::cout << content << std::endl;

    return content;
}