Estou com um problema o código abaixo funciona perfeitamente em C/C++ mas to tentando aprende java e não estou conseguindo compara uma string.
Pelo teste que fiz o erro tá nessa comparação:
if(procuracpf == null)
como fazer para comparar a string com algo vazio, pq minha ideia é ver se o usuario digitou algo, para ajudar vou postar o código inteiro se alguem tiver uma ideia, desde já agradeço!!!
Em Java, quando você compara usando == você está comparando se as referências dos objetos são iguais, ou seja, se apontam para o mesmo endereço de memória, basicamente. Para comparar o conteúdo dos objetos (no seu caso, das suas Strings) você deve utilizar o método equals() da classe Object (ou seja, todos os objetos que você criar em Java terão esse método).
Para comparar suas Strings, faça:
String a = "blabla";
String b = "bleble";
if(a.equals(b)) { //vai retornar false
//...
}
Se quiser comparar com uma String vazia, faça
if("".equals(suaString)) { //... }
Caso queira verificar igualdade entre objetos de uma classe que você mesmo criou, não se esqueça de sobrescrever o método equals() na definição dessa sua classe.
é porque em java String é tida como um objeto e se em java vc usar o operador ‘==’ para comparar dois objetos
ele vai estar comparando as posições de memoria daqueles objetos.
um outro geito é usar length(). Exemplo
String s = “”;
if(s.length() == 0) //retorna o tamanho da palavra
System.out.print("String Vazia);
Caras muito obrigado pela ajuda funcionou mas tem um outro problema que não estou conseguindo achar o erro, o swith e case não esta dando certo o que pode ser??? Segue abaixo o código:
[code] procuracpf = busca_cpf.getText();
procuranome = busca_nome.getText();
if(procuracpf == null)
cont1 = 0;
else
cont1 = 1;
if(procuranome == null)
cont2 = 0;
else
cont2 = 1;
if(cont1 == 0 && cont2 == 1)
escolha = 0;
if (cont1 == 1 && cont2 == 0)
escolha = 1;
if (cont1 == 1 && cont2 == 1)
escolha = 2;
else
escolha = 3;
//Escolha da opção
switch(escolha){
case 0:
JOptionPane.showMessageDialog(null, "Campo CPF vazio nome preenchindo!");
break;
case 1:
JOptionPane.showMessageDialog(null, "Campo Nome vazio , CPF preenchido");
break;
case 2:
JOptionPane.showMessageDialog(null, "Os Campos estão preenchindo!");
break;
case 3:
JOptionPane.showMessageDialog(null, "Nenhum dos campos preenchindo!");
break;
} [/code]
Você já ouviu falar em variáveis booleanas?
Mesmo em C++ existe o tipo bool, que assume os valores “true” e “false”.
Evite ao máximo usas variáveis inteiras, em Java (e em C++) para representar condições booleanas (0 = false, 1 = true).
Por acaso está voltando sempre “Os campos estão preenchidos”? É que getText retorna a string vazia ("") em vez de null, quando o campo não está preenchido.
O teste correto seria algo como:
if ("".equals(procuracpf))
cont1 = 0;
else
cont1 = 1;