Welcome to MMA SE! What the code above does is simply repeatedly overwrite the value of `A`

. In each iteration of the loop, it evaluates `A = i + j`

, so the `A`

at the end of the loop is simply `i + j`

for the last `i`

, `j`

in the loop.

You *could* do a `For`

loop where you initialize `A`

to a table, and then set different parts of `A`

, e.g. `A((i,j)) = "*"`

. That’s not advisable in Mathematica, but it would look like this:

```
n=6;
A = ConstantArray("", {n,n});
For(i=1,i<=n,i++,For(j=1,j<=i,j++,A((i,j)) = "*"));
A // Grid
```

(Note an important change from the given code: we use `j <= i`

, not `j <= n`

.)

But it’s far easier to simply use `Table`

(or `Array`

, for an alternative approach) to generate matrices, with a conditional statement in each entry that test if `i < j`

:

```
Table(If(i < j, "", "*"), {i, 6}, {j, 6}) // Grid
```

Another way: you could also use `LowerTriangularize`

on a 6 by 6 `ConstantArray`

of `"*"`

, and replace all the resulting `0`

s in the upper triangle with `""`

:

```
(LowerTriangularize(ConstantArray("*", {6, 6})) /. (0 -> "")) // Grid
```