Nao esta caindo dentro do laço if.. [RESOLVIDO]

5 respostas
faeldix
if (jTdescricao.getText() == "" || jTnome.getText() == "" || jTnome.getText() == "" || jTpatrimonio.getText() == ""
                || jTramal.getText() == "" || jTsetor.getText() == "") {
            JOptionPane.showMessageDialog(null, "EXISTEM CAMPOS EM BRANCO, POR FAVOR VERIFIQUE");
        } else {
            
            try {
                adicionaOS();
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "ERRO INTERNO, POR FAVOR AVISAR SETOR DE INFORMATICA");
            }

            jBbusca.setEnabled(true);
            jBcriaOS.setEnabled(true);
            jBeditaos.setEnabled(true);
            limpaDados();
            desabilitaDados();
        }

Acho que so com esse codigo ai da pra sacar.. me ajudem rs

5 Respostas

nel

Oi!

Não se diz “laço do if” mas “bloco do if”.
Sobre sua dúvida, impossível saber porque não cai no if. Além de muitos campos, não sabemos o contéudo deles.
O seu código não valida algo como " " entendeu?

Use isso:

if(string != null && string.trim().isEmpty())

Caso não queira permitir entrada de valores em branco.
Veja se nenhum campo é nulo, null é diferente de “”.

Abraços.

adriano_si

Cara, esse erro todo mundo que está iniciando cai nele…

1º String não são tipos primitivos e sim objetos;

2º Objetos não são comparados com == a menos que você queira saber se ambos apontam para o mesmo endereço de memória;

3º Para comparar Objetos, usamos o método que é herdado da classe mãe de todas as classes (Object) chamado equals();

Para se usar o equals() podemos sobrescrevê-lo para ter um comportamento adequado às nossas necessidades, ou podemos simplesmente usar o Default que no caso da classe String retorna o próprio valor da mesma.

Código retirado da classe String do pacote java.lang JDK6_u22

public boolean equals(Object anObject) {
	if (this == anObject) {
	    return true;
	}
	if (anObject instanceof String) {
	    String anotherString = (String)anObject;
	    int n = count;
	    if (n == anotherString.count) {
		char v1[] = value;
		char v2[] = anotherString.value;
		int i = offset;
		int j = anotherString.offset;
		while (n-- != 0) {
		    if (v1[i++] != v2[j++])
			return false;
		}
		return true;
	    }
	}
	return false;
    }

Tudo isso pra dizer que nesse caso você deve trocar o == pelo .equals("")

abs[] e bons estudos.

faeldix

maldito e maravilhoso EQUALS funcionou que foi uma beleza… vlww

adriano_si

Maravilhoso mesmo, dá pra fazer muita coisa bacana quando você aprende a usá-loa aseu favor…

Coloca resolvido no título do tópico cara.

Abs [] e sucesso nos estudos.

WellingtonRamos

é nessas horas que a sobrecarga de operadores do C++ se torna útil :wink:
Como não temos isso em Java… o jeito é usar o que API fornece. Usar o equals citado pelo adriano_si disse ou o isEmpty() citado pelo nel.
Mas para o teste que está sendo feito, acho mais adequado o isEmpty.

Criado 31 de agosto de 2011
Ultima resposta 31 de ago. de 2011
Respostas 5
Participantes 4