我有一个以欢迎屏幕开头的程序“输入随机变量X的数字”,这个数字指的是列。如果输入5 =>将创建一个DataGridView
,其中包含5列和2行(第一行用于用户输入的随机变量,第二行用于概率)。例如:
X 1 2 3 4 5 6
p 2 2 2 2 2 2
我必须将x1
乘以概率p1
,将值x2
乘以概率p2
,依此类推。所以EX = x1*p1 + x2*p2 +...
问题出现了 - 如何相乘然后再添加它们?
只有2行,这就是我需要的数量:
我只启用了2行,这就是我必须拥有的这个程序:
Const allowedRows As Integer = 2
Private Sub DataGridView1_UserAddedRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles DataGridView1.UserAddedRow
DataGridView1.AllowUserToAddRows = DataGridView1.RowCount <= allowedRows
End Sub
Private Sub DataGridView1_UserDeletedRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles DataGridView1.UserDeletedRow
DataGridView1.AllowUserToAddRows = DataGridView1.RowCount <= allowedRows
End Sub
循环是:
For j = 0 To DataGridView1.Columns.Count
For i As Integer = 0 To DataGridView1.RowCount - 1
multi = CInt(DataGridView1.Rows(i).Cells(j).Value) * CInt(DataGridView1.Rows(i).Cells(j).Value)
Next
EX += multi
Next
我不认为它必须是这样的(它给出了OutOfRange异常),但这就是我写在这里的原因,所以如果有人知道怎么做,我会非常感激。提前谢谢。
答案 0 :(得分:0)
我对C Sharp比较熟悉,如果它不是100%,请原谅我的语法。
我觉得你最喜欢那里。我会给出两组代码,这样你就可以将它从C Sharp中解脱出来,如果我的VB语法稍微偏离......无论哪种方式,概念都应该是合理的。
VB
For j = 0 To DataGridView1.Columns.Count
EX += CInt(DataGridView1.Rows(0).Cells(j).Value) * // mult p*X in each column
CInt(DataGridView1.Rows(1).Cells(j).Value) // and add total 'EX'
Next
C#
//Do math
int EX = 0;
for (int j = 0; j < dgv.Columns.Count; j++)
{
EX += Convert.ToInt32(dgv.Rows[0].Cells[j].Value) *
Convert.ToInt32(dgv.Rows[1].Cells[j].Value);
}