Having Weird Issues Multidimensional Looping

Hello everyone, I'm somewhat intermediate at programming, but I've been having real problems developing my own version of tic tac toe with bi-directional LEDs. I have been going over and over this function but can't figure out why it isn't printing correctly. My code necessitates that I individually check each index by using i and j equals the index values.

  bool buttonPressAndMatrixUp(boolean player) {
  int repeatCheck = 0; //used in a different function that won't affect this function
  bool flagTurn = 0; //used to change the status of a turn in the whole code
  int i2 = 0; //for some reason I think initializing is breaking my for loops in the same line as the for code
  int j2 = 0;
  for (i2; i2 < rows; i2++){ //rows already equals 3 as a const int at the beginning
    for (j2; j2 < columns; j2++){ //columns also equals 3 as a const int at the beginning of my sketch
      if (i2 == 0 && j2 == 0){
        //Serial.println("R1C1");  this works fine, so I commented it
      } else if (i2 == 0 && j2 == 1){
        //Serial.println("R1C2"); also works
      } else if (i2 == 0 && j2 == 2){
        //Serial.println("R1C3"); also works
      } else if (i2 == 1 && j2 == 0) {
          Serial.println("R2C1"); //this doesn't work at all, it is driving me mad
      }
}

The last print never executes and I can't figure out why. It should let i2 = 0 and j2 to loop 3 times and update i2 to 1, but it seems like it doesn't. Am I doing things wrong?

for (j2; j2 < columns; j2++){ You're not initialising j2

It is right above the for loop, J2 is initialized.

Edit:

For some reason, Arduino doesn't like the way I initialized. It didn't recognize that I had set i2 and j2 = 0 previously, I had to be literal in the for loop:

for(i2 = 0 ....) and for(j2 = 0....), what a strange way the compiler behaves.

gooseBoat49:
It is right above the for loop, J2 is initialized.

So?
What about the i2 loop?

TheMemberFormerlyKnownAsAWOL:
So?
What about the i2 loop?

Caught the error, apparently, Arduino does not like the way I initialized and didn't catch that i2 and j2 already equaled 0. Solved my own error, but thank you to TheMemberFormerlyKnownAsAwol for pointing out that the compiler is not treating it as initialized.

gooseBoat49:
Caught the error, apparently, Arduino does not like the way I initialized and didn't catch that i2 and j2 already equaled 0. Solved my own error, but thank you to TheMemberFormerlyKnownAsAwol for pointing out that the compiler is not treating it as initialized.

I don't like the way you "initialised" j2.

Think about what happens when the first j2 loop finishes.

This is not how the "Arduino compiler" (whatever that is) thinks about things, it is about how you think about things.
Be assured, the C++ compiler knows what is what.

for(i2 = 0 ....) and for(j2 = 0....), what a strange way the compiler behaves.

The compiler follows the agreed-upon rules. If you won't, don't expect your program to work.