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);
}

2つの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();
    }

編集:

input=500 のこのコード: 2ms

(入力 1 000 で 5ms)

+= string concatenation for input=500 を使用するコード: 33 468ms (ガベージ コレクションのみ)

(入力 1 000 に対して数分間実行しても、まだ何もありません)

于 2012-07-25T06:58:50.127 に答える