Conflito de Array - Java

Olá, pessoal, tudo bem?
Então estou com uma dúvida tenho uma trabalho para fazer um jogo da velha usando array multidimensional então conseguir preencher todos os arrays e até fazer a checagem tipo se preencher 3 na mesma linha iguais então vc ganhou o jogo, mais meu problema é o seguinte, em algumas situações mesmo eu preenchendo os 3 campos com “x” em uma determinada linha (nisso ele entra com uma condicional “if” para checar se a linha que você digitou e a coluna é aquela) mas o programa entra num “if” que não era pra entrar, e através do “Debug” eu consigo ver isso e N/AO SEI PORQUE, eu acho q minha lógica está correta, MAIS SOU INICIANTE ENTÃO PODE ESTAR ERRADA OU SEI LÁ, vou colocar a parte que ta dando esse “conflito” caso precise eu posto o código inteiro pra vcs.

do {
		//check = false;
		while (checkDentroFor1 == false) {
			System.out.println(jogador1 + " - Jogador - X");				

			while (checkNum3 == false){

				System.out.println("Entre com a POSX");
				posX =Integer.parseInt(scan.next());

				System.out.println("Entre com a POSY");
				posY = Integer.parseInt(scan.next());
				if (posX < 3 && posY < 3) {
					checkNum3 = true;
				} else {
					System.out.println("Posição errada tente novamente!");
				}

			}
			checkNum3 = false;


			formulaPosX = tabuleiro.length - (posX + 1);
			formulaPosY = tabuleiro[0].length - (posY + 1);


			for (int i = 0; i<(tabuleiro.length - formulaPosX); i++) {

				for (int j = 0; j<(tabuleiro[i].length - formulaPosY); j++) {

					if (posX == i && posY == j) {

						if (tabuleiro[i][j] == null) {
							tabuleiro[i][j] = "X";
							System.out.println();
							System.out.println(jogador1 + " - Jogador - X linha " + i + " coluna " + j);
							System.out.println();
							
							//Linha
							
							if (tabuleiro[0][j] != null && tabuleiro[0][j].equals("X")) {									
								contX0++;
								if (contX0 == 3) {
									System.out.println(jogador1 + " você ganhou!");
									check = true;
								}							

								checkDentroFor1 = true;	

							} else if (tabuleiro[1][j] != null && tabuleiro[1][j].equals("X")) {
								contX1++;
								if (contX1 == 3) {
									System.out.println(jogador1 + " você ganhou!");
									check = true;
								}							

								checkDentroFor1 = true;	

							} else if (tabuleiro[2][j] != null && tabuleiro[2][j].equals("X")) {
								contX2++;
								if (contX2 == 3) {
									System.out.println(jogador1 + " você ganhou!");
									check = true;
								}							

								checkDentroFor1 = true;										
							
							//Coluna
							
							} else if (tabuleiro[i][0] != null && tabuleiro[i][0].equals("X")) {									
								contXY0++;
								if (contXY0 == 3) {
									System.out.println(jogador1 + " você ganhou!");
									check = true;
								}							

								checkDentroFor1 = true;	

							} else if (tabuleiro[i][1] != null && tabuleiro[i][1].equals("X")) {
								contXY1++;
								if (contXY1 == 3) {
									System.out.println(jogador1 + " você ganhou!");
									check = true;
								}							

								checkDentroFor1 = true;	

							} else if (tabuleiro[i][2] != null && tabuleiro[i][2].equals("X")) {
								contXY2++;
								if (contXY2 == 3) {
									System.out.println(jogador1 + " você ganhou!");
									check = true;
								}							

								checkDentroFor1 = true;										
							}






							checkDentroFor1 = true;
						} else {
							System.out.println("Campo já preenchido tente de novo");

						}

					} else {

					}


				}
			}
		}

Grato

É difícil saber qual o problema postando apenas o código, diga também com quais valores está entrando em conflito e o que está sendo impresso com aqueles valores.

Então eu consegui resolver, adicionando mais uma condicional “if” e tirando os “else if” deixando apenas os “if” vou postar o código inteiro pra vc ver, mais eu consegui fazer funcionar, mais acho q poderia deixar ele bem mais limpo, mais ae eu não sei como.

package aula20;

import java.util.Scanner;

public class JogoDaVelha {

public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);

	System.out.println("--------------Jogo da Velha--------------");
	String[][] tabuleiro = new String[4][4];
	boolean check = false;
	boolean checkDentroFor1 = false;
	boolean checkNum3 = false;
	int cont = 0;

	System.out.println("Digite seu nome 1º jogador");
	String jogador1 = scan.next();
	String X = "X";
	int posX = 0;
	int posY = 0;
	int formulaPosX = 0;
	int formulaPosY = 0;
	int contX0 = 0;
	int contX1 = 0;
	int contX2 = 0;

	int contXY0 = 0;
	int contXY1 = 0;
	int contXY2 = 0;

	int conDiagX = 0;
	int conDiagX2 = 0;






	System.out.println("Digite seu nome 2º jogador");
	String jogador2 = scan.next();
	String O = "O";
	int posX2 = 0;
	int posY2 = 0;
	int formulaPosX2 = 0;
	int formulaPosY2 = 0;
	int contO0 = 0;
	int contO1 = 0;
	int contO2 = 0;

	int contOY0 = 0;
	int contOY1 = 0;
	int contOY2 = 0;

	int conDiagO = 0;
	int conDiagO2 = 0;


	do {
		//check = false;
		while (checkDentroFor1 == false) {
			System.out.println(jogador1 + " - Jogador - X");				

			while (checkNum3 == false){

				System.out.println("Entre com a POSX");
				posX =Integer.parseInt(scan.next());

				System.out.println("Entre com a POSY");
				posY = Integer.parseInt(scan.next());
				if (posX < 3 && posY < 3) {
					checkNum3 = true;
				} else {
					System.out.println("Posição errada tente novamente!");
				}

			}
			checkNum3 = false;


			formulaPosX = tabuleiro.length - (posX + 1);
			formulaPosY = tabuleiro[0].length - (posY + 1);


			for (int i = posX; i<(tabuleiro.length - formulaPosX); i++) {

				for (int j = posY; j<(tabuleiro[i].length - formulaPosY); j++) {

					if (posX == i && posY == j) {

						if (tabuleiro[i][j] == null) {
							tabuleiro[i][j] = "X";
							System.out.println();
							System.out.println(jogador1 + " - Jogador - X linha " + i + " coluna " + j);
							System.out.println();

							//Linha

							if (tabuleiro[0][j] != null && tabuleiro[0][j].equals("X")) {
								if (posX == 0) {
									contX0++;

									//Diagonal
									if (tabuleiro[0][0] != null) {
										if (posY == 0) {
											conDiagX2++;
											if (conDiagX2 == 3) {
												System.out.println(jogador1 + " você ganhou!");
												check = true;
											}

										}
									}

									//Diagonal
									if (tabuleiro[0][2] != null) {
										if (posY == 2) {
											conDiagX++;
											if (conDiagX == 3) {
												System.out.println(jogador1 + " você ganhou!");
												check = true;
											}

										}
									}
									//---------------------------------//

									if (contX0 == 3) {
										System.out.println(jogador1 + " você ganhou!");
										check = true;
									}


									checkDentroFor1 = true;	
								}

							} if (tabuleiro[1][j] != null && tabuleiro[1][j].equals("X")) {
								if (posX == 1) {
									contX1++;

									//Diagonal
									if (tabuleiro[1][1] != null) {
										if (posY == 1) {
											conDiagX++;
											conDiagX2++;
											if (conDiagX == 3 || conDiagX2 == 3) {
												System.out.println(jogador1 + " você ganhou!");
												check = true;
											}

										}
									}
									//---------------------------------//

									if (contX1 == 3) {
										System.out.println(jogador1 + " você ganhou!");
										check = true;
									}							

									checkDentroFor1 = true;	
								}

							} if (tabuleiro[2][j] != null && tabuleiro[2][j].equals("X")) {
								if (posX == 2) {
									contX2++;

									//Diagonal
									if (tabuleiro[2][2] != null) {
										if (posY == 2) {
											conDiagX2++;
											if (conDiagX2 == 3) {
												System.out.println(jogador1 + " você ganhou!");
												check = true;
											}

										}
									}

									if (tabuleiro[2][0] != null) {
										if (posY == 0) {
											conDiagX++;
											if (conDiagX == 3) {
												System.out.println(jogador1 + " você ganhou!");
												check = true;
											}

										}
									}
									//--------------------------------

									if (contX2 == 3) {
										System.out.println(jogador1 + " você ganhou!");
										check = true;
									}							

									checkDentroFor1 = true;	
								}

								//Coluna

							} if (tabuleiro[i][0] != null && tabuleiro[i][0].equals("X")) {
								if (posY == 0) {
									contXY0++;
									if (contXY0 == 3) {
										System.out.println(jogador1 + " você ganhou!");
										check = true;
									}							

									checkDentroFor1 = true;	
								}

							} if (tabuleiro[i][1] != null && tabuleiro[i][1].equals("X")) {
								if (posY == 1) {
									contXY1++;
									if (contXY1 == 3) {
										System.out.println(jogador1 + " você ganhou!");
										check = true;
									}							

									checkDentroFor1 = true;	
								}

							} if (tabuleiro[i][2] != null && tabuleiro[i][2].equals("X")) {
								if (posY == 2) {
									contXY2++;
									if (contXY2 == 3) {
										System.out.println(jogador1 + " você ganhou!");
										check = true;
									}							

									checkDentroFor1 = true;										
								}


							}	

							checkDentroFor1 = true;
						} else {
							System.out.println("Campo já preenchido tente de novo");

						}

					} else {

					}


				}
			}
		}

		cont += 1;
		checkDentroFor1 = false;
		if (cont < 9 && check == false) {
			while (checkDentroFor1 == false) {
				System.out.println(jogador2 + " - Jogador - O");					

				while (checkNum3 == false){
					System.out.println("Entre com a POSX2");
					posX2 = Integer.parseInt(scan.next());

					System.out.println("Entre com a POSY2");
					posY2 = Integer.parseInt(scan.next());
					if (posX2 < 3 && posY2 < 3) {
						checkNum3 = true;
					} else {
						System.out.println("Posição errada tente novamente!");
					}
				}
				checkNum3 = false;

				formulaPosX2 = tabuleiro.length - (posX2 + 1);
				formulaPosY2 = tabuleiro[0].length - (posY2 + 1);

				for (int i = posX2; i<(tabuleiro.length - formulaPosX2); i++) {

					for (int j = posY2; j<(tabuleiro[i].length - formulaPosY2); j++) {
						if (posX2 == i && posY2 == j) {
							if (tabuleiro[i][j] == null) {
								tabuleiro[i][j] = "O";
								System.out.println();
								System.out.println(jogador2 + " - Jogador - O linha " + i + " coluna " + j);
								System.out.println();

								//Linha

								if (tabuleiro[0][j] != null && tabuleiro[0][j].equals("O")) {
									if (posX2 == 0) {
										contOY0++;

										//Diagonal
										if (tabuleiro[0][0] != null) {
											if (posY2 == 0) {
												conDiagO2++;
												if (conDiagO2 == 3) {
													System.out.println(jogador2 + " você ganhou!");
													check = true;
												}

											}
										}

										//Diagonal
										if (tabuleiro[0][2] != null) {
											if (posY2 == 2) {
												conDiagO++;
												if (conDiagO == 3) {
													System.out.println(jogador2 + " você ganhou!");
													check = true;
												}

											}
										}
										//---------------------------------//

										if (contOY0 == 3) {
											System.out.println(jogador2 + " você ganhou!");
											check = true;
										}							

										checkDentroFor1 = true;	
									}

								}if (tabuleiro[1][j] != null && tabuleiro[1][j].equals("O")) {
									if (posX2 == 1) {
										contOY1++;											

										//Diagonal
										if (tabuleiro[1][1] != null) {
											if (posY2 == 1) {
												conDiagO++;
												conDiagO2++;
												if (conDiagO == 3 || conDiagO2 == 3) {
													System.out.println(jogador2 + " você ganhou!");
													check = true;
												}

											}
										}

										//---------------------------------//

										if (contOY1 == 3) {
											System.out.println(jogador2 + " você ganhou!");
											check = true;
										}							

										checkDentroFor1 = true;	
									}

								} if (tabuleiro[2][j] != null && tabuleiro[2][j].equals("O")) {
									if (posX2 == 2) {
										contOY2++;											

										//Diagonal
										if (tabuleiro[2][0] != null) {
											if (posY2 == 0) {
												conDiagO++;
												if (conDiagO == 3) {
													System.out.println(jogador2 + " você ganhou!");
													check = true;
												}

											}
										}

										//Diagonal
										if (tabuleiro[2][2] != null) {
											if (posY2 == 2) {
												conDiagO2++;
												if (conDiagO2 == 3) {
													System.out.println(jogador2 + " você ganhou!");
													check = true;
												}

											}
										}
										//---------------------------------//

										if (contOY2 == 3) {
											System.out.println(jogador2 + " você ganhou!");
											check = true;
										}							

										checkDentroFor1 = true;	
									}


									//Coluna


								} if (tabuleiro[i][0] != null && tabuleiro[i][0].equals("O")) {
									if (posY2 == 0) {
										contO0++;
										if (contO0 == 3) {
											System.out.println(jogador2 + " você ganhou!");
											check = true;
										}							

										checkDentroFor1 = true;	
									}

								} if (tabuleiro[i][1] != null && tabuleiro[i][1].equals("O")) {
									if (posY2 == 1) {
										contO1++;
										if (contO1 == 3) {
											System.out.println(jogador2 + " você ganhou!");
											check = true;
										}							

										checkDentroFor1 = true;	
									}

								} if (tabuleiro[i][2] != null && tabuleiro[i][2].equals("O")) {
									if (posY2 == 2) {
										contO2++;
										if (contO2 == 3) {
											System.out.println(jogador2 + " você ganhou!");
											check = true;
										}							

										checkDentroFor1 = true;										
									}
								}




								checkDentroFor1 = true;
							} else {
								System.out.println("Campo já preenchido tente de novo");

							}

						} else {

						}

					}					
				}
			}
		}

		cont += 1;
		checkDentroFor1 = false;


	} while (cont < 9 && check == false );


	for (int i = 0; i<tabuleiro.length; i++) {
		for (int j = 0; j<tabuleiro[i].length; j++) {
			if (tabuleiro[i][j] != null) {	
				System.out.println("tabuleiro[" + i + "][" + j + "] = " + tabuleiro[i][j]);
			}

		}
	}

}

}

Tente separar alguns trechos do código em métodos:

public static int[] leiaPosicao(Scanner scan, String nome) {
 boolean check = false;
 int x = -1;
 int y = -1;
 while (check == false) {
  System.out.println(nome + ", entre com a x");
  x = Integer.parseInt(scan.next());

  System.out.println(nome + ", entre com a y");
  y = Integer.parseInt(scan.next());
  if (x < 3 && y < 3) {
   check = true;
  } else {
   System.out.println("Posição errada tente novamente!");
  }
 }
 int[] posicao= new int[2];
 posicao[0] = x;
 posicao[1] = y;
 return posicao;
}

e no código:

//check = false;
while (checkDentroFor1 == false) {
 System.out.println(jogador1 + " - Jogador - X");
 int[] posicao = leiaPosicao(scan, jogador1);
 posX = posicao[0];
 posy = posicao[1];