-1

C# Visual Basic 2010 で次のコードを作成しました。

for (int i = 7; i > 0; i--)
{
    Char star = '*';
    string numbers = "765432" ;

    //Console.WriteLine(star);

    for (int a = 0; a < i; a++)
    {
        Console.Write(star);
    }
    for (int b =  0; b < i; b++)
    {
        numbers.TrimEnd(numbers[numbers.Length - 1]);
        Console.Write(numbers);
    }
    Console.WriteLine();   
}
Console.ReadLine();   

私は結果を期待していました: *765432 画面上で7回繰り返されましたが、代わりに次のようになりました:

*****765432765432765432765432765432

****765432765432765432765432

***765432765432765432

**765432765432

*765432

(画面に正しく表示されないため、完全な結果を表示することはできませんが、基本的には、1 行目に 7 回、2 行目に 6 回など、7 行目に 1 回まで変数の星と数字が表示されます)

私の理解では、 for ループで宣言されたaandb変数は、 for ループに入る回数を指定する必要があります。なぜスター変数と数値変数も、ループに入る回数と一致するように 7 回、次に 6 回書き込まれるのですか? ? 特にそれらが*およびとして初期化されている場合は765432

4

5 に答える 5

1

いいえ。'a' for ループが実行され、その数の星が出力され、'b' for ループが次に実行され、その数の文字列が出力されます。'*765432' を 7 回繰り返すだけの場合は、次のように変更する必要があります

for (int a = 0; a < i; a++)
{
Console.Write(star);
}
for (int b =  0; b < i; b++)
{
numbers.TrimEnd(numbers[numbers.Length - 1]);
Console.Write(numbers);
}

for (int a = 0; a < 7; a++)
{
Console.Write(star);
Console.Write(numbers);
} 

親ループを取り出します。それが、ますます短い行を提供しているものです。

于 2013-09-24T21:48:08.843 に答える
0

TrimEnd()この状況では、複数の for ループ を使用する必要はありません。

  public static void Main()
        {
            for (int i = 7; i > 0;i--)
            {
                char star = '*';
                string numbers = "765432";
                Console.WriteLine(star + numbers);

            }
            Console.ReadLine();
        }

出力:

*765432
*765432
*765432
*765432
*765432
*765432
*765432
于 2014-10-29T02:19:14.613 に答える