【问题标题】:Multiplication table using 2D arrays and methods使用二维数组和方法的乘法表
【发布时间】:2017-03-18 12:43:16
【问题描述】:

我是一名新学生,在完成这项作业时遇到了一些麻烦,但 powerpoint 笔记和其他在线指南似乎没有帮助。如果有人能给我指点,将不胜感激!

private static int[,] GenerateTT(int size)

       {       
            int[,] table = new int[size,size];      
            for (int i = 1; i < size+1; i++)      
        {      
                for (int j = 1; j < i+1; j++)      
                {      
                    table[i-1, j-1] = i * j;      
                }      
            }      
            return table;      
        }      
        private static void DisplayTT(int[,] table)      
        {      
            Console.WriteLine();       
            Console.WriteLine("Here is the times table for that size:");      
            Console.WriteLine();      
            for (int i = 1; i <= table.Length; i++)      
            {      
                for (int j = 1; j <= i; j++)      
                {      
                        Console.Write("{0}\t", table[i-1, j-1]);     
                }      
                Console.WriteLine("\n");      
            }      
                Console.WriteLine();      
        }      

输出应该是这样的(例如输入4):

1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16

但我得到的是这个,加上它在 DisplayTT(table) 处崩溃:

1
2 4
3 6 9
4 8 12 16

如果有帮助,这里是 Main 方法的相关部分。

int size = GetValue("Please enter the size (4-20) of the times table: ", 4, 20);        
Console.WriteLine();        
int[,] table = GenerateTT(size);        
DisplayTT(table);        

【问题讨论】:

    标签: c# arrays multidimensional-array


    【解决方案1】:

    你应该改变内循环hi-bound:

    private static int[,] GenerateTT(int size)
    {       
        int[,] table = new int[size,size];      
        for (int i = 1; i < size+1; i++)      
        {      
            for (int j = 1; j < i+1; j++)    // <-- change  i+1  to  size+1
            {      
                table[i-1, j-1] = i * j;      
            }      
        }      
        return table;      
    }      
    

    我宁愿让循环从零开始:

    private static int[,] GenerateTT(int size)
    {       
        int[,] table = new int[size,size];      
        for (int i = 0; i < size; i++)      
        {      
            for (int j = 0; j < size; j++)      
            {      
                table[i, j] = (i+1) * (j+1);      
            }      
        }      
        return table;      
    }      
    

    【讨论】:

      【解决方案2】:

      您可以将GetLength(X) 属性用于多维数组,其中X 是维度的索引。

      for (int i = 0; i < table.GetLength(0); i++)      
      {      
          for (int j = 0; j < table.GetLength(1); j++)      
          {      
                  Console.Write("{0}\t", table[i, j]);     
          }      
          Console.WriteLine("\n");      
      } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 2018-07-16
        相关资源
        最近更新 更多