两个字符的整数如何转换为字符?

3

我正在编写一个计算表达式中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个回答

6

你不必使用 Replace(char, char) 这个方法重载。还有一个 Replace(string, string) 的方法重载:

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

你可能已经意识到了,但你解方程的方法仅适用于特定类型的方程。主要有以下问题:

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

你能解释一下如何使用浮点数来计算,例如5.10+x=5.20吗? - Scholler
@Scholler,那么你不能使用当前的方法——尝试一堆值并查看哪个有效。你可能需要某种算法来重新排列方程式。这个问题变得更加困难了。 - Sweeper

2

将其转换为字符串而不是char:

最初的回答

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

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"];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接