0

我正在尝试使用 for 循环。

如果输入为 3,则结果将是:

1**
*2*
**3

所以我使用了这段代码

void button1_Click(object sender, EventArgs e) {
    string message = " ";
    int value = numericUpDown1.Value;
    for(int count = 0; count < value; count++) {
        for(int m = -2; m < value; m++) {
            message += "*";
        }
        message += "\r\n";
    }
    MessageBox.Show(message);
}

我使用了两个 for 循环,但我无法修复它以显示数字,但它给了我

***
***
***
4

2 回答 2

3
int digitCount = 3;
string message = " ";
for (int round = 1; round <= digitCount; round++)
{
    for (int digit = 1; digit <= digitCount; digit++)
    {
        if (digit == round)
        {
            message += digit;
        }
        else
        {
            message += "*";
        }
    }

    message += "\r\n";
}
于 2012-07-25T04:18:23.507 回答
1
private string StarNumbers(int input)
    {
        var range = Enumerable.Range(1, input);
        var sb = new StringBuilder(input*input);
        foreach (var number in range)
        {
            var line = String.Format("{0}{1}{2}", new string('*', number - 1), number, new string('*', input - number));
            sb.AppendLine(line);
        }
        return sb.ToString();
    }

编辑:

输入 = 500 的此代码:2ms

(输入 1 000 为 5ms)

使用 += 字符串连接输入 = 500 的代码:33 468 毫秒(它所做的只是垃圾收集)

(为输入 1 000 运行几分钟,但仍然没有)

于 2012-07-25T06:58:50.127 回答