【问题标题】:+ Operator c# with string+ 运算符 c# 带字符串
【发布时间】:2013-07-22 09:20:01
【问题描述】:

我在下面得到了这段代码,它应该将两个变量相乘并从文本框kpriplac 中添加到它的数量。但是当乘法值为 10 并且 kpriplac 值例如也是 10 时,输出为 1010。但我需要该输出为 20。我还检查了 this

我在哪里犯了错误?感谢您抽出宝贵时间阅读本文。

if (double.TryParse(comboBoxText, out comboxValue) && int.TryParse(textBox16.Text.Trim(), out textboxValue))
{
    textBox19.Text = ((comboxValue * textboxValue) + (kpriplac.Text)).ToString();
}

【问题讨论】:

  • kpriplac.Text 在哪里转换为int

标签: c# math operator-keyword


【解决方案1】:

+ 带有字符串的运算符作为连接运算符运行。您需要将字符串解析为 int 或 float。

例如:

textBox19.Text = ((comboxValue * textboxValue) + Convert.ToInt32(kpriplac.Text)).ToString();

编辑

请确保kpriplac.Text 是:

  • 不为空
  • 不只包含空格
  • 不包含字符或不可转换的字符串。

如果它则相应地处理。

Convert Class Msdn

【讨论】:

  • -1 因为如果 kpriplac.Text 为空,此代码将引发异常。就像输入字符串的格式不正确
  • 对于像提问者一样天真的人来说并不明显。谁甚至不知道 string 和 int 的连接是如何工作的?
  • 因为我仍然不喜欢编写代码的方式。这不是正确的做法。 :)
【解决方案2】:

就目前而言,您的代码正在向字符串添加一个数字,该字符串在 (comboxValue * textboxValue) 表达式上隐式调用 ToString()执行字符串连接

您还需要将kpriplac.Text 中的值解析为数字类型,这与您为comboBoxTexttextBox16.Text 所做的方式大致相同。

【讨论】:

    【解决方案3】:

    您需要对每个字符串调用 int.Parse,然后将解析后的值相乘或相加,最后将它们转换回字符串。

    仅当您确定给定的字符串确实是整数时才使用 int.Parse。如果不是,则抛出异常。如果您不确定并想手动处理它们,请改用 int.TryParse。

    【讨论】:

      【解决方案4】:

      你面对这个是因为

       (comboxValue * textboxValue)
      

      是一个整数,而

       kpriplac.Text 
      

      是一个字符串

      在 C# 中 string + int = string. 因此,假设乘法返回 10。您的文本框中也有 10

      所以会发生什么

              10 + "10"  = 1010
      

      将您的代码更改为

       if (double.TryParse(comboBoxText, out comboxValue) && int.TryParse(textBox16.Text.Trim(), out textboxValue))
       {
          int tempValue = 0;
          if(int.TryParse(kpriplac.Text,out tempValue))
               textBox19.Text = ((comboxValue * textboxValue) + tempValue).ToString();
       }
      

      【讨论】:

        【解决方案5】:

        试试这个

        Convert.ToInt32(((comboxValue * textboxValue) + (kpriplac.Text))).ToString();

        【讨论】:

        • -1 因为它不会返回所需的结果。它仍然会返回 1010。
        猜你喜欢
        • 2013-04-09
        • 2014-02-27
        • 2016-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-12
        • 2017-09-27
        相关资源
        最近更新 更多