在给定的列和行中打印给定数字控制台应用程序

时间:2014-08-04 10:48:08

标签: c# console

我想根据行数和列数打印给定列表,但始终显示第6个数字

static void Main(string[] args)
    {
        //string total, rows, columns = "";
        //Console.WriteLine("Enter Total No Of Numbers");
        //total = Console.ReadLine();
        //Console.WriteLine("Enter all Numbers seperated by Comma");
        //var allNumbers = Console.ReadLine();
        //var array = allNumbers.Split(',');
        //Console.WriteLine("Enter Number of Rows");
        //rows = Console.ReadLine();
        //Console.WriteLine("Enter Number of columns");
        //columns = Console.ReadLine();

        string total, rows, columns = "";

        total = "30";
        var allNumbers = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30";
        var array = allNumbers.Split(',');

        rows = "5";

        columns = "6";

        for (int i = 0; i < Convert.ToInt32(rows); i++)
        {
            for (int j = 0; j < Convert.ToInt32(columns); j++)
            {
                Console.Write(array[j]);
                Console.Write("\t");
            }

            Console.WriteLine();
        }
        Console.ReadLine();
    }

1 个答案:

答案 0 :(得分:1)

你走了:

string total, rows, columns = "";

total = "30";
var allNumbers = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30";
var array = allNumbers.Split(',');

rows = "5";

columns = "6";

for (int i = 0; i < Convert.ToInt32(rows); i++)
{
    for (int j = 0; j < Convert.ToInt32(columns); j++)
    {
        Console.Write(array[j + (i * Convert.ToInt32(columns))]);
        Console.Write("\t");
    }

    Console.WriteLine();
}

基本上在你的循环中,你从来没有尝试过索引的第一行。我认为需要做出一些评论:

  1. 使用变量存储解析输入的结果。
  2. 喜欢使用转换的int.TryParse(...)(取决于您的情况)。虽然两者都有效,但使用TryParse可以更精细地控制错误。
  3. 循环中的循环是一个坏主意(如果你可以避免它们)。您可以为此目的使用单个循环,当您到达行尾时执行Console.WriteLine,并且您不会遇到此问题。