0

コンソールから正の整数 N (N < 20) を読み取り、次のような行列を出力するプログラムを作成しようとしています。

N = 3
1 2 3
2 3 4
3 4 5

N = 5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9

これは私のコードです:

using System;
namespace _6._12.Matrix
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Please enter N ( N < 20): ");
            int N = int.Parse(Console.ReadLine());
            int row;
            int col;
            for (row = 1; row <= N; row++)
            {
                for (col = row; col <= row + N - 1; )
                {
                    Console.Write(col + " ");
                    col++;
                }
                Console.WriteLine(row);
            }
            Console.WriteLine();
        }
    }
}

問題は、コンソールが 1 から N までの数字で 1 つの余分な列を出力し、それを取り除く方法がわからないことです。なぜこれが起こっているのか考えていますが、まだ解決策を見つけることができません。

4

6 に答える 6

4

シンプル、Console.WriteLine(row);変更Console.WriteLine();

あなたがそれをしている間。

    static void Main()
    {
        int N;

        do
        {
            Console.Write("Please enter N (N >= 20 || N <= 0): ");
        }
        while (!int.TryParse(Console.ReadLine(), out N) || N >= 20 || N <= 0);

        for (int row = 1; row <= N; row++)
        {
            for (int col = row; col <= row + N - 1; )
            {

                Console.Write(col + " ");
                col++;
            }
            Console.WriteLine();
        } 

        Console.Read();
    }

Please enter N (N >= 20 || N <= 0): 5
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 
4 5 6 7 8 
5 6 7 8 9 
于 2012-08-06T06:20:04.097 に答える
1

この行Console.WriteLine(row);を次Console.WriteLine(); のように変更するだけです。各内部ループの終わりに、行の値を再度書き込みます。これは必要ありません。

于 2012-08-06T06:22:14.310 に答える
0

最初の質問は、Console.WriteLine(row) が何をしていると思いますか? プログラミングを学ぶときは、コードを実行して微調整し、もう一度実行して目的どおりに動作するかどうかを確認するのではなく、コードが何をしているのか、なぜそれをしているのかを「見る」ことが重要です。に。コードが何をしているのかを頭の中で明確かつ簡潔に確認すると、 Console.WriteLine(row) が正しくなく、その時点で改行を書くだけでよいことに気付くでしょう。

于 2012-08-06T06:34:21.937 に答える