Acho que meu if nao ta funcionando!

8 respostas
A

Pessoal,

Estou fazendo um programinha com paineis, botoes, etc para aprender.
Apos clicar em um botao, o programa deve pegar o texto digitado em uma JTextField e comparar com um variavel String se o texto digitado é igual ao texto dessa String. Se sim ele imprime "Igual" se não ele imprime "Diferente".

Problema é que se for digitado o mesmo que esta atribuido para a String ele imprime "Diferente"...

Aí vai o código:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class CJanela extends JFrame {

	private JTextField fieldNome = new JTextField(10);
	private JButton botaoVerifica = new JButton("Verificar");
	private JButton botaoSair = new JButton("Sair");
	private JPanel painelNome;
	private JPanel painelBotoes;
	private JLabel labelNome = new JLabel("Nome: ");

	
	public CJanela() {
		super("Verificador de Nome");
		setSize(350, 150);
		setLocation(300, 200);
		setVisible(true);

		painelNome = new JPanel(new FlowLayout(FlowLayout.LEFT));

		painelNome.add(labelNome);
		painelNome.add(fieldNome);


		TratamentoVerificador manipulador = new TratamentoVerificador();
		painelBotoes = new JPanel(new FlowLayout(FlowLayout.RIGHT));
		botaoVerifica.addActionListener(manipulador);
		botaoSair.addActionListener(manipulador);
		painelBotoes.add(botaoVerifica);
		painelBotoes.add(botaoSair);

		Container areaConteudo = getContentPane();
		areaConteudo.setLayout(new BorderLayout());

		areaConteudo.add(painelNome, BorderLayout.NORTH);
		areaConteudo.add(painelBotoes, BorderLayout.SOUTH);

	}

	class TratamentoVerificador implements ActionListener {
		public void actionPerformed(ActionEvent e) {

			if (e.getSource() == botaoVerifica) {
				
				String nomeVerificar = "andre";
				String nome = fieldNome.getText();
				

				if (nomeVerificar == nome) {

					System.out.println("igual");

				}else{
					System.out.println("diferente");
					
				}

			}

			if (e.getSource() == botaoSair) {
				System.exit(0);
			}

		}
	}

}

O que ta errado?

Abraços

8 Respostas

thegoergen

Ao invés de

if (nomeVerificar == nome) {

use:

if (nomeVerificar.equals(nome) ) {
A

Maravilha!
Funcionou… muito obrigado cara

Deixa eu tentar entender… usar == é mais apropriado para variaveis do tipo int ou double certo?
Por isso nao estava funcionando?

Valeu msmo!!!

S

Cara, tenta comparar a tua string com o que vem to jtextfield usando equals em vez de == ok?

se nao for isso, fala ai que analiso denovo o codigo.

flw

davidtiagoconceicao

Seu erro está aqui:

if (nomeVerificar == nome) {

String é uma classe, para obter o efeito que você quer, utilize:

if (nomeVerificar.equals(nome)) {

Edit: desculpa aí pessoal, mosqueei e não vi as mensagens anteriores…

A

Galera muito rapida aqui!!!

Valeu mesmo!!! Errei e aprendi com meu erro…

Maravilha, fica facil aprender assim

Abraços e muito obrigado!

caio_ferreira

hehe, pessoal é rapido mesmo hein, kkk
tbm ja errei isso, agora nao esqueço mais, comparar String .equals()

A

Andre,

Só para esclarecer, == compara a referência dos objetos(Verifica se é o mesmo objeto no heap). Já o método equals (que vem da classe Object) verifica
se os dois objetos possuem conteúdo significativamente iguais, por isto, use equals.

Abraço

LPJava

assim so um detalhe que achei engracado ao ler o titulo do topico. Bom o if ele funciona normalmente, mais vc pode ter implemenado de forma que nao atende ao que vc pretende.

:smiley:

Criado 28 de novembro de 2008
Ultima resposta 28 de nov. de 2008
Respostas 8
Participantes 7