【问题标题】:Integer comparison C#整数比较 C#
【发布时间】:2013-08-24 05:54:49
【问题描述】:

我有一个用户输入 9 个数字的文本框。我正在尝试将此数字的最后两位数字与 myInt 进行比较:

        int myInt = 34;
        int numberToCompare = Convert.ToInt32(textBox1.Text);
        if (numberToCompare == myInt)
        {
            MessageBox.Show("Vat number correct");
        }

如果文本框输入等于说:876545434,我如何切掉剩余的数字:8765454(34),然后我可以将其与 myInt 进行比较?文本框编号将始终保持为 9 位!

更新:

我用这种方法管理它:

        int myInt = 34;
        int numberToCompare = Convert.ToInt32(textBox1.Text.Substring(7,2));
        if (numberToCompare == myInt)
        {
            MessageBox.Show("Vat number correct");
        }
        else
        {
            MessageBox.Show("Vat number incorrect");
        }

但我想知道为什么这是一个不好的方法?

【问题讨论】:

  • 听起来你应该使用字符串,而不是ints。请记住:如果不能添加,则不是数字。
  • 您总是可以添加一个 int 吗?这没有意义?
  • 因为如果你的字符串不是 9 个数字长
  • 如果你做 100000 次,最好使用 MOD 运算符

标签: c# winforms comparison int


【解决方案1】:

如果 textbox1.text = 876545434

if(txtBoxInput.length >  4)
{
   Textbox1.text.substring( txtBoxInput.length - 2 ,2)
}

会给你 34

【讨论】:

  • 这个效率非常低,而不是仅仅解析它并使用mod。
  • 是的,事实上有多种方法可以给猫剥皮。仅取决于您要完成的工作。在今天的处理器上,这样做 1 次并不重要。即使在循环中多次执行此操作也不会产生太大影响
  • 此方法会在输入 34、2、134 等时中断。
  • @MicahArmantrout 不是处理造成的;这是因为它非常脆弱,如果输入不完全符合预期,则更容易无法正常工作。
  • 只为你改了:)
【解决方案2】:
String txtBoxInput = "1234567890";

try{
    //Some validation for Servy
   if(txtBoxInput!=null && txtBoxInput is String && txtBoxInput.Length>1)
   {
     String last2Numbs = txtBoxInput.Substring(txtBoxInput.Length-2);

     Int32 lasst2NumbersInt;
     bool result = Int32.TryParse(last2Numbs, out last2NumbsInt);

     if(result && last2NubsInts == MyInt)
       MessageBox.Show("Vat number correct");
     }
}
catch(Exception ServysException)
{
    MessageBox.Show("Uhhhh ohh! An over engineered simple answer threw an error: " + ServysException.Message);
}

【讨论】:

  • 您的回答引发异常,输入为0。
  • @Servy 我刚刚更新了它以具有正确的语法。我刚刚运行它,它可以工作
  • 如果字符串只有一个字符长,它会在substring 上给你一个索引超出范围的错误。
  • @Servy 刷新你的页面
  • @Servy 我确信这里可能会发生 10000 个不同的错误。 OP 没有询问负长度或错误值。他说用9位数的长度...
【解决方案3】:
    int myInt = 34;
    int numberToCompare = Convert.ToInt32(textBox1.Text);
    if ((numberToCompare % 100) == myInt)
    {
        MessageBox.Show("Vat number correct");
    }

【讨论】:

    【解决方案4】:

    在很多方面都不理想,但字符串类有 EndsWith() 方法。如果它以“34”结尾,您将有一个匹配项。当然是一个简单的解决方案。

    【讨论】:

    • 不错!会试一试的。
    • @It'sNotALie。怎么样?它与该输入配合得很好。
    • @Servy 我猜 OP 想单独计算缺点。不过你猜。
    • @It'sNotALie。要求是“最后两位数是 3 和 4”。 -1234 的最后两位数字为 3 和 4。 -123 没有。此函数可以适当地处理这两种情况,除非 OP 希望所有负数都被拒绝,而不管它们的最后一位数如何。
    猜你喜欢
    • 2013-01-15
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 2011-04-19
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多