Skip to main content
4 of 4
added 432 characters in body
AxelH
  • 319
  • 1
  • 10

You are doing a lot of if-condition to find what you need to print. This works but this is a verbose. You could find some logic in what you want to print.

Your output is a simple square matrix that you want to split by it's diagonal. Here is the matrix :

   0x0   0-1   0-2   0-3   0-4   0-5   0-6   0-7   0-8   0-9
   1-0   1x1   1-2   1-3   1-4   1-5   1-6   1-7   1-8   1-9
   2-0   2-1   2x2   2-3   2-4   2-5   2-6   2-7   2-8   2-9
   3-0   3-1   3-2   3x3   3-4   3-5   3-6   3-7   3-8   3-9
   4-0   4-1   4-2   4-3   4x4   4-5   4-6   4-7   4-8   4-9
   5-0   5-1   5-2   5-3   5-4   5x5   5-6   5-7   5-8   5-9
   6-0   6-1   6-2   6-3   6-4   6-5   6x6   6-7   6-8   6-9
   7-0   7-1   7-2   7-3   7-4   7-5   7-6   7x7   7-8   7-9
   8-0   8-1   8-2   8-3   8-4   8-5   8-6   8-7   8x8   8-9
   9-0   9-1   9-2   9-3   9-4   9-5   9-6   9-7   9-8   9x9

I've highlighted the diagonal by using a x instead of an -.

And here is what you want to print (with the same spaces)

x    o    o    o    o    o    o    o    o    o
x    x    o    o    o    o    o    o    o    o
x    x    x    o    o    o    o    o    o    o
x    x    x    x    o    o    o    o    o    o
x    x    x    x    x    o    o    o    o    o
x    x    x    x    x    x    o    o    o    o
x    x    x    x    x    x    x    o    o    o
x    x    x    x    x    x    x    x    o    o
x    x    x    x    x    x    x    x    x    o
x    x    x    x    x    x    x    x    x    x

You can see some pattern here. Every place you want an ois on the right of the diagonal.

So you can write this as a condition depending on x and y like this :

  • if x < y : we are on the right of the diagonal-> O
  • if not x < y : we are on the left or on the diagonal -> X

You could use a if-else to print x or o but I like to do it on one line so I used use a simple ternary condition: (ternary is simple condition ? true statement : false statement)

       for(int x = 0; x < 10 ; ++x){
            for(int y = 0; y < 10 ; ++y){
                System.out.print(x < y ? 'o' : 'x');
            }
            System.out.println();
        }
AxelH
  • 319
  • 1
  • 10