Ajuda - Erro Besta

6 respostas
thundercas

Galera, já tentei de tudo, mas não consigo descobrir porque, no programa abaixo, a String “campo” nunca é válida, exibindo sempre a mensagem:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.Scanner;

import javax.swing.JOptionPane;

public class JogoDaVelha {

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		boolean valida;
		int a1, a2, a3, b1, b2, b3, c1, c2, c3;
		int vezDeQuem = 0;
		int acabou = 0;
		String campo;
		String desenho;
		String jogador1, jogador2, jogador;

		jogador1 = JOptionPane
				.showInputDialog("Digite o nome do primeiro jogador");
		jogador2 = JOptionPane
				.showInputDialog("Digite o nome do segundo jogador");

		while (!(acabou == 4)) {
			if (!(vezDeQuem % 2 == 0)) {
				jogador = jogador1;
				desenho = "O";
			} else {
				jogador = jogador2;
				desenho = "X";
			}
			System.out.println("É sua vez " + jogador + "!!");
			campo = JOptionPane.showInputDialog("Digite o campo em que deseja jogar");
			valida = true;

			if (jogador.equals(jogador1)) {
				if (campo == "a1")
					a1 = 1;
				else if (campo == "a2")
					a2 = 1;
				else if (campo == "a3")
					a3 = 1;
				else if (campo == "b1")
					b1 = 1;
				else if (campo == "b2")
					b2 = 1;
				else if (campo == "b3")
					b3 = 1;
				else if (campo == "c1")
					c1 = 1;
				else if (campo == "c2")
					c2 = 1;
				else if (campo == "c3")
					c3 = 1;
				else {
					JOptionPane.showMessageDialog(null,"Digite um campo válido!!");
					valida = false;
				}
			} else {
				if (campo == "a1")
					a1 = 2;
				else if (campo == "a2")
					a2 = 2;
				else if (campo == "a3")
					a3 = 2;
				else if (campo == "b1")
					b1 = 2;
				else if (campo == "b2")
					b2 = 2;
				else if (campo == "b3")
					b3 = 2;
				else if (campo == "c1")
					c1 = 2;
				else if (campo == "c2")
					c2 = 2;
				else if (campo == "c3")
					c3 = 2;
				else {
					JOptionPane.showMessageDialog(null,"Digite um campo válido!!");
					valida = false;
				}
			}
			if (valida) {
				acabou++;
				vezDeQuem++;
			}
				
		}

	}
}

Se alguém puder ajudar, ficarei agradecido, obrigado!!!

6 Respostas

furutani

Olá

Troque

campo == "a1"

por

campo.equals("a1")

Por que usar equals e não == ???

thundercas

Deu certo cara… Eu tinha tentando o equals(), mas coloquei no lugar errado do código kkkkk… É isso aih, valeu!!

Respondendo sua “pergunta”, eu sei que o método equals() é para comparar String, mas não sei porque não funciona o “==”. Se alguém puder explicar ^^

Preco

O “==” compara duas referencias a objeto, pra ver se elas se referem à mesma instância desse objeto. Isso não funciona bem com Strings porque pode haver dois objetos distintos, porém com o mesmo valor. O “equals” compara o valor desses objetos, que é aquilo que geralmente se deseja fazer quando se compara Strings…

Se quiser mais detalhes, tem uma página legal que fala sobre isso aqui

thundercas

Valeu cara, brigadao…

falvesti

Outra coisa… Pq ao invés de

while (!(acabou == 4))

você não usa simplesmente while (acabou != 4) ?

abraço

I

Uma sugestão ao criar um topico:

Procure definir sua duvida no topico exemplo:

Erro ao comparar o valor de um campo text

Pois quem entrar no topico ja vai mais ou menos saber do que se trata, evite criar topicos do tipo:
Ajuda!!!, HELP!!! , Meu codigo não deu certo!!!..

Abraços,
Info.

Criado 30 de dezembro de 2007
Ultima resposta 3 de jan. de 2008
Respostas 6
Participantes 5