字符的两个字符整数?

时间:2019-03-24 13:27:20

标签: c#

因此,我正在编写一个在表达式中计算X的程序,例如,如果我键入2 * x = 6,则它将表示x = 3。 我的代码:

  string[] exps = textBox1.Text.Split('=');
  DataTable dt = new DataTable();
  for (int i = 0; i < 50; i++)
  {
        string s = exps[0].Replace('x', Convert.ToChar(i.ToString())); //<- problem is there
        var v = dt.Compute(s, "");
        if (int.Parse(v.ToString()) == int.Parse(exps[1]))
        {
              listBox1.Items.Add("x = " + i);
              break;
        }
  }

但是当X大于9(所以它是两个字符)(例如12或27)时,我遇到了问题,它无法将其转换为char。您能帮我怎样做得更容易?谢谢!

对不起,我英语不好

3 个答案:

答案 0 :(得分:6)

您不必使用Replace(char, char)重载。还有一个Replace(string, string)重载:

string s = exps[0].Replace("x", i.ToString());

您可能已经意识到这一点,但是您求解方程的方法仅适用于非常特殊的一种方程。主要是这些问题:

  • 解决方案必须是0到49之间的整数
  • 必须只有一个解决方案
  • 必须清楚地表示乘法,即5x并不等于x的5倍。
  • 右侧必须是整数。通过用Compute(当然还有exps[1]替代项)调用x可以轻松解决此问题。

答案 1 :(得分:2)

代替char只是将其转换为字符串:

exps[0].Replace("x", i.ToString());

答案 2 :(得分:1)

您可以创建一个包含两列的数据表

(1)的列名为“ X”,它将保留值和

(2)将具有表达式的计算列。

示例代码:

        var dt=new DataTable();
        dt.Columns.Add(new DataColumn("X", typeof(float)));

        var exprCol=new DataColumn("Expr");
        exprCol.Expression="X+10";

        dt.Columns.Add(exprCol);

        var row = dt.NewRow();
        row["X"] = 5;
        dt.Rows.Add(row);
        var calculatedValue=row["Expr"];