0

次の非常に基本的なコードがあります。

static void Main(string[] args)
{
    int n = Convert.ToInt32(Console.ReadLine());

    for (int i = 0; i < n*3; i++)
    {
        string[] 数字 = Console.ReadLine().Split();
        Console.WriteLine();
        Console.WriteLine(numbers[i]);
    }
}

次のデータを取得することになっています。

3  
11 9 1  
14 90 232  
111 15 111  

データの行数を決定するために最初の数値を使用しています(これには理由がありますが、この質問の範囲外です。
ループは2、3、4行目を取り、数値配列を入力して、 data up so numbers[0] = 11, numbers[1] = 9, numbers[2] = 1... など 私が見ているのは、行の最初の数字を配列に入れて移動していることですこれが現在行っていることのプレビューです。

3  
11 9 1

11  
14 90 232

90  
111 15 111

出力が次のようになることを望んでいました。

3  
11 9 1

11 9 1  
14 90 232

14 90 232  
111 15 111

111 15 111

私はおそらく完全に愚かで露骨に明白なことをしていますが、まだC#を学ぼうとしています.

4

2 に答える 2

0

ご覧のとおり、数値配列はループ内にあるため、ループが反復するたびに配列が再初期化されるため、そうです-プログラムはすべての数値を配列に入れますが、i番目の要素のみを出力し、さらには9 回実行すると、配列が 9 回初期化されます (かなり大きなことですが)。以下は、コードのより単純で簡単なものです。

static void Main(string[] args)
{
    int n = Convert.ToInt32(Console.ReadLine());
    string numbers[3];

    // read n lines, one by one
    for (int i = 0; i < n; i++)
    {
        numbers = Console.ReadLine().Split();
        Console.WriteLine();

        // print the 3 numbers, either using a smaller loop or simply indexing        
        // I use a loop here to make it more dynamic

        for (int j = 0; j < 3; j++) {
            Console.WriteLine(numbers[j] + " ");
        }
    }
}

私はあなたの期待される出力を正確に理解していませんが。最後に印刷された行をもう一度表示しますか? はいの場合、新しい数値を読み取る前に数値配列を簡単に出力できます(ブール値フラグなどを使用して、空でないことを確認してください)。

于 2020-06-23T12:21:10.207 に答える