winform 文本框中输入的矩阵读入到二维数组当中的问题
窗口中有两个文本框 txt1 txt2 和一个button
我在类当中定义的:
static double[ , ]m;
static string[] b;
当运行程序的时候 如果输入一个“,”后,会出现错误
txt1的keypress事件为
private void txt1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar < '0' || e.KeyChar > '9')
{
e.Handled = true;
}
if (e.KeyChar == 8 || (e.KeyChar == 13 || e.KeyChar == 44 || e.KeyChar==46 )) //限制只能输入逗号、小数点和数字。
{
e.Handled = false;
}
button的click事件为
private void button1_Click_1(object sender, EventArgs e)
{
int k, j;
int c;
int i = txt1.Lines.Length; //文本的行数
string[] temp = new string[i];
temp = txt1.Lines; // temp数组记录的是文本框中每一行的字符串
for (k = 0; k < i; k++)
{
b = temp[k].Split(','); //以“,”分割每一行的字符串,得到字符串数组b
c = b.Count(); //计算每一行中数组b中字符的个数;
for (j = 0; j < c; j++)
{
double[,] m = new double[i, c]; //i为二维数组的行数,c为二维数组的列数,也就是m[i,c]的二维数组。
m[k, j] = double.Parse(b[j]); //将分割的字符转化为 double 类型
} //这里出现错误:“输入字符串的格式不正确”
}
txt2.Text = m[0,0].ToString();
//这里有个问题:“m”与声明“测绘.Form4.m”冲突
}
点击button时,本想将矩阵传入到二维数组中,但是出现错误,程序停止
------解决方案--------------------textchanged事件中判断是否endwith(",,")
在你的另一个贴子里刚回复了你。
------解决方案--------------------double d = 0;
// m 应该在此处初始化
m = new double[i];
for (k = 0; k < i; k++)
// ...此处略去若干个字
// m[k]应该这样初始化
m[k] = new double[c];
for (j = 0; j < c; j++)
{
// 下面的语句属于初始化的逻辑有错误
//double[,] m = new double[i, c]; //i为二维数组的行数,c为二维数组的列数,也就是m[i,c]的二维数组
//m[k, j] = double.Parse(b[j]); //将分割的字符转化为 double 类型
// m[k,j]应该这样赋值
if(double.tryParse(b[j],d)}{
m[k,j] = d;
}
}
}
txt2.Text = m[0,0].ToString();
}