使用2D数组和方法的乘法表

时间:2016-11-04 15:47:17

标签: c# arrays multidimensional-array

我是一名新学生,对此作业有点麻烦,但是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崩溃了(表格):

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);        

2 个答案:

答案 0 :(得分:0)

您应该更改内部循环的高架:

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;      
}      

答案 1 :(得分:0)

您可以将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");      
}