0

我正在尝试编写一个需要我将数据添加到数据网格的程序。有一种模式,但我似乎无法弄清楚如何通过 For 循环体面地完成这些数据。

这是我没有使用 For-Loop 的代码:

table.Rows.Add("0", "0", "0", "0", "0");
table.Rows.Add("0", "0", "0", "1", "0");
table.Rows.Add("0", "0", "1", "0", "0");
table.Rows.Add("0", "1", "0", "0", "0");

table.Rows.Add("1", "0", "0", "0", "0");
table.Rows.Add("1", "0", "0", "1", "0");
table.Rows.Add("1", "0", "1", "0", "0");

table.Rows.Add("1", "1", "0", "0", "0");
table.Rows.Add("1", "1", "0", "1", "0");

table.Rows.Add("1", "1", "1", "0", "0");
table.Rows.Add("1", "1", "1", "1", "0");

最后一个零将动态生成,无需对此做任何事情。

这是否可以通过 For 循环来实现?

4

2 回答 2

2

你可以使用这个循环,虽然它不是很可读。因此,如果您可以使用静态代码,请使用它。

bool allFieldsOne = false;
table.Rows.Add("0", "0", "0", "0", "0");
while (!allFieldsOne)
{
    DataRow lastRow = table.Rows[table.Rows.Count - 1];
    DataRow currentRow = table.Rows.Add();
    currentRow[4] = "0";
    for (int f = 3; f >= 0; f--)
    {
        if (lastRow.Field<string>(f) == "0")
        {
            currentRow[f] = "1";
            while (--f >= 0)
                currentRow[f] = "0";
            break;
        }
        else
        {
            currentRow[f] = "1";
            allFieldsOne = f == 0;
        }
    }
}
于 2012-10-23T12:39:21.857 回答
0

这种for循环模式有用吗?(这是用于真值表的模式,只是二进制计数)

for (int i = 0; i < 16; i++)
            {
                Console.WriteLine(
                   string.Format("{0:0000}",
                   Convert.ToInt16(Convert.ToString(i, 2)))
                );
            }

/* 
OUTPUT
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
*/
于 2012-10-23T12:12:16.230 回答