因此,我正在编写一个在表达式中计算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。您能帮我怎样做得更容易?谢谢!
对不起,我英语不好
答案 0 :(得分:6)
您不必使用Replace(char, char)
重载。还有一个Replace(string, string)
重载:
string s = exps[0].Replace("x", i.ToString());
您可能已经意识到这一点,但是您求解方程的方法仅适用于非常特殊的一种方程。主要是这些问题:
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"];