乘法表使用二维数组和方法

本文关键字:二维数组 方法 | 更新日期: 2023-09-27 18:16:26

我是一个新学生,做这个作业有点困难,但是ppt笔记和其他在线指南似乎没有帮助。如果有人能给我一个指针,我将不胜感激!

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

崩溃

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

乘法表使用二维数组和方法

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

您应该更改内循环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;      
}      

我宁愿保持循环从0开始:

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