Dúvida com null

8 respostas
M

Olá pessoal!

Tenho um textfield que recebe uma data, a variável str recebe o conteúdo do textfield. Eu converto essa data para o formato 2007-03-30 para poder verificar se existe no banco de dados. Quando não passo nenhuma data a variavel str fica com valor null, daí faço a comparação:

if(str == null) 
   str = "";

Mas o valor vazio não é atribuido. Passa pela comparação e se comporta como se str fosse diferente de null.

Quando faço no passo a passo o valor passado para a variável é null. Quando peço para escrever o valor da variável “System.out.println(str)”, o valor escrito é null, mas quando faço a comparação é como se não tivesse null. Se coloco str != null dá certo. Mas daí sempre que tiver uma data será atribuída vazio.

O que estou fazendo de errado? Se alguém tiver uma idéia…
Obrigada

8 Respostas

K

if(str.equals("") ) str = "";

Romeo

Esse é o velho problema que todos tem com a classe String, tem uma matéria aqui no GUJ que fala só sobre a classe String, dá uma olhada nele…

O karen só te respondeu acima, mas procura esta materia pra vc entender melhor…

Mantu

karen_barbatto:
if(str.equals("") ) str = "";

Só pra complementar a resposta da(o) karen: Quando você “pega” o texto de um JTextField através do método getText(), você nunca receberá um valor nulo. Se o campo estiver vazio, o método lhe retornará um String vazio, e não o valor null. Por isso que a(o) karen sugeriu o código acima.

M

Utilizando esse código também não funcionou. Continua a variável str com valor null. E agora??

MrDataFlex

Recomendo:

if (str.trim().equals("")) ...

o trim remove os espaços tanto da direita , quanto da esquerda… sendo uma forma mais exata de saber que o formulário está realmente vazio…
pois somente com:

if (str.equals(""))

não iria funcionar, caso o usuário enxesse de espaços em branco o Jtf…

considere o str, sendo : jtf.getText();

T

Para evitar problemas (digamos que o valor venha realmente como “null”), deve-se fazer a seguinte comparação:

if (str == null || str.trim().length() == 0) {
    ... 
}

Usar str.isEmpty() é equivalente a str.length() == 0, só que isEmpty só está disponível para o Java 6.0 ou superior.

M

Valeu galera pelas dicas!!!

Vou ler o artigo sobre a classe string.

Vcs como sempre muito competentes!!!

:smiley:

otaviofcs

Tem algo errado com essa história do str ser nulo… Posta a parte completa do código, onde ele está recebendo a modificando a variável str com o método getText().

Criado 30 de março de 2007
Ultima resposta 30 de mar. de 2007
Respostas 8
Participantes 7