Andreas Andreas - 1 month ago 20
C# Question

Multiplication Table in C#

Im new to C# (and programming in general) and im stuck on a School Lab.
Been trying to make the multiplication table 1-10 but I get an error I dont understand.

I got this using System.Array; using System.Linq; aswell so what am I doing wrong? I might be doing nothing right hehe

static void Calculate(int[] numbers)
{
int[] CalculateMultTable = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Calculate(CalculateMultTable);
{
for (int i = 0; i < numbers.Lenght; i++)
{
numbers[i] = numbers[i] * numbers[i];

Answer

As other answers point out, you are making an infinite recursive call and are probably getting a StackOverflowException. Also, I can't tell what you are doing with your array. Are you supposed to be assigning into it? Is it there just to help the loop print the right numbers? You can do it simply this way:

for(int i = 1; i <= 10; i++)
{
   for(int j = 1; j <= 10; j++)
   {
      Console.Write((i * j).ToString() + "\t");
   }
   Console.WriteLine();
}

That will give you this as output:

1   2   3   4   5   6   7   8   9   10  
2   4   6   8   10  12  14  16  18  20  
3   6   9   12  15  18  21  24  27  30  
4   8   12  16  20  24  28  32  36  40  
5   10  15  20  25  30  35  40  45  50  
6   12  18  24  30  36  42  48  54  60  
7   14  21  28  35  42  49  56  63  70  
8   16  24  32  40  48  56  64  72  80  
9   18  27  36  45  54  63  72  81  90  
10  20  30  40  50  60  70  80  90  100

If you want to save that into a 2D array, you can get rid of my Console.WriteLine and replace the Console.Write with code that looks like this:

int[,] multTable = new int[10,10];
for(int i = 1; i <= 10; i++)
{
   for(int j = 1; j <= 10; j++)
   {
      multTable[i - 1, j - 1] = i * j;
   }
}

You probably want to change the return type of your method from void to int[,], which is a two dimensional array of ints.

Even though I think you're going to throw it away, just as a tip to help save you some typing in the future, your array can be initialized much more easily than typing out all 10 elements. When it follows a regular pattern like that, you can just use a loop:

int[] x = new int[10];
for(int i = 0; i < 10; i++)
{
   x[i] = i + 1;
}
//this will give you the same array.  
//Doesn't save any typing for just 10 elements, but saves a ton if you need,
//for example, 100 elements from 1-100