Ir ao conteúdo
  • Cadastre-se

Java Não sei onde ta o erro


soumma

Posts recomendados

Alguem poderia me dizer qual é o problema

package praticas;

public class JojoVelha {
	
	private String[][] jogoVelha = new String[3][3];
	
	public String[][] getJogoVelha() {
		return jogoVelha;
	}

	public void setJogoVelha(String[][] jogoVelha) {
		this.jogoVelha = jogoVelha;
	}


	public JojoVelha() {
    System.out.println("*** Jogo da Velha ***\n");
	IniciarTabuleiro();	
	
	}
	
	
	public void IniciarTabuleiro() {
		jogoVelha = new String[3][3];
		   for(int i =0; i<jogoVelha.length; i++) {
			   for(int j =0; j<jogoVelha[i].length; j++) {
				   jogoVelha[i][j] = "+";
				   System.out.print(" "+jogoVelha[i][j]);
			   }
			   System.out.println(" ");
		   }
	}
	
	
	public void MostrarTabuleiro() {
		for(int i =0; i<jogoVelha.length; i++) {
			   for(int j =0; j<jogoVelha[i].length; j++) {
				   System.out.print(" "+jogoVelha[i][j]);
			   }
			   System.out.println(" ");
		   }
	}
	
	public boolean jogar1(int n1, int n2) {
		n1--;
		n2--;
		if(jogoVelha[n1][n2].equalsIgnoreCase("X") || jogoVelha[n1][n2].equalsIgnoreCase("O")) {
			System.out.println("Casa já ocupada.");
			return false;
		}
		jogoVelha[n1][n2] = "X";
		return true;
	}
	
	public boolean jogar2(int n1, int n2) {
		n1--;
		n2--;
		if(jogoVelha[n1][n2].equalsIgnoreCase("X") || jogoVelha[n1][n2].equalsIgnoreCase("O")) {
			System.out.println("Casa já ocupada.");
			return false;
		}
		jogoVelha[n1][n2] = "O";
		return true;
	}
	
	
	

}
package praticas;

import java.util.Scanner;

public class JogoDaVelha {
	static int n1, n2;
	static void informarTurno() {
		Scanner scan = new Scanner(System.in);
		 System.out.println("Turno do jogador 1. Entre com a linha e coluna: ");
		   n1 = scan.nextInt();
		   n2 = scan.nextInt();
	}
	static void informarTurno2() {
		Scanner scan = new Scanner(System.in);
		 System.out.println("Turno do jogador 2. Entre com a linha e coluna: ");
		   n1 = scan.nextInt();
		   n2 = scan.nextInt();
	}
	

	public static void main(String[] args) {
		
		
		
	   boolean sair = false;
		  JojoVelha jogoVelha = new JojoVelha();
		  while(!sair) {
			  do {
		   informarTurno();
		   jogoVelha.jogar1(n1, n2);
		   jogoVelha.MostrarTabuleiro();
			  }
			  while(jogoVelha.jogar1(n1, n2) == false);
		   
			 
			  do {
		   informarTurno2();
		   jogoVelha.jogar2(n1, n2);
		   break;
			  }
			  while(jogoVelha.jogar2(n1, n2) == false);
			  
		   jogoVelha.MostrarTabuleiro();
			  
		   
	   }
	   

	}
	

}

Eu tho tentando manter dentro do loop a condição se em uma posição do array já esta ocupado, e se estiver refazer a jogada. O problema ta nesse loop que não sei o porque mas sempre reconhece o método como falso mesmo se for a primeira jogada

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@soumma Olá. Experimenta iniciar o tabuleiro assim (com todas as posições vazias) :

public void IniciarTabuleiro() {
    jogoVelha = new String[3][3];
    for(int i =0; i<jogoVelha.length; i++) {
        for(int j =0; j<jogoVelha[0].length; j++) {
            jogoVelha[i][j] = " ";
        }
    }

O problema no seu código é que na classe onde você verifica se a casa está ocupada ou não o tabuleiro inda não foi iniciado com as posições todas vazias. Logo, sempre vai dar erro

É esse o problema 😀

Outro ponto: para comparar Strings em Java é com o método equals

Ex:

jogoVelha[n1][n2].equals("X")

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!