Testes com String

7 respostas
masterpablo

Olá amigos, estou com uma dúvida em relação à uma string.

bo, estou fazendo um programinha da faculdade que é um sistema de banco. Chega numa parte do programa que eu tenho que solicitar ao usuário que ele digite sua senha. Como ainda nao vimos gravação de dados em arquivos ou banco de dados, o professor já definiu uma senha (123) e quando o usuário digitar a senha dele, o programa apenas compara para ver se é diferente de 123. Se for diferente ele dá uma mensagem de erro, se for igual ele continua a execução. Pois bem eu fiz o seguinte:

.
.
.
String senha;

senha=“123”;

.
.
.
.

senha=JOptionPane.showInputDialog();

if (senha!=123)

{

MENSAGEM DE ERRO!!!

}

É claro que eu configurei a mensagem de erro dentro da sintaxe do java mas o fato é que a senha sendo igual ou não a “123”, o programa entra no IF, mesmo que a senha esteja correta ele entra nessa condição. Para resolver esse programa eu estou convertendo a String em Int, aí sim ele funciona. Queria entender o que está errado na minha comparação de String.

Será que podem me ajudar???

Agradeço desde já!

7 Respostas

thundercas

Cara, sinal de comparação (== e !=) não funciona para String. Você tem que utilizar o método String.equals() ou String.equalsIgnoreCase().

Rulio

Hummm… thundercas tens alguma explicação técnica, tipo não dá verdadeiro por causa do pool de string ou algo parecido ??
Ajuda com algumas explicações a mais…

Valeu…

thundercas

Rulio, veja… Quando você faz

if (senha!="123") 
{ 
MENSAGEM DE ERRO!!! 
}

Sempre será exibida a mensagem de erro, pois a função != não lê o conteúdo da variável senha…
Para comparar o conteúdo deste, você deve fazer da seguinte maneira:

if (!senha.equalsIgnoreCase("123")) 
{ 
MENSAGEM DE ERRO!!! 
}

Daí sim o sistema exibida a mensagem APENAS quando senha não for igual a 123.

Caso você queira definir senha como int, daí sim você poderia utilizar o código informado por você. Espero ter ajudado, abraços

Kassiane_Pretti

No caso de numeros vc pode usar o equals msm, lembrando que ele serve para a comparação de strings fazendo diferenciação de maiusculas para minusculas…

Rulio

Certo… Tranquilo e pra reforçar vai uma pequena explicação que encontrei do autor Carlos Miranda.

existem duas comparações de igualdade que se possa fazer, você
pode comparar se o conteúdo semântico é igual ou se as referências são
iguais.

No primeiro caso, para verificar a igualdade semântica de literais
utiliza-se o operador ==

ex:

int a = 1;

int b = 2

int c = 1;
a == b  --> false;
            a == c  --> true;
            b == c  --> false;

    Para comparar a igualdade semântica de objetos utiliza-se equals
    
    String a = "Mane";
    String b = "Manezao";
    String c = "Mane";
    String d = new String("Mane");

    a.equals(b) --> false;
    a.equals(c) --> true;
    d.equals(a) --> true;
    d.equals(a) --> true;
    b.equals(c) --> false;

    Nos casos que você tenha sua própria classe, deve-se implementar o

método equals
exemplo:

class Estudante {

            String nome;
            byte idade;
            String endereco;
    
            public boolean equals(Object o) {
                if (o == this) {
                    return true;
                }
                if (o instanceof Estudante) {
                    Estudante e = (Estudante) o;
                    boolean b1 = e.nome.equals(nome);
                    boolean b2 = e.idade == idade;
                    boolean b3 = e.endereco.equals(endereco);
                    return b1 && b2 && b3;
                }
                return false;
            }


    
    Agora no segundo caso de comparação de igualdade da referência, é

utilizado somente em objetos, o operador ==

String a = "Mane";
    String b = "Manezao";
    String c = "Mane";
    String d = new String("Mane");

    a == b --> false;
    a == c --> true;
    d == c --> false; 
    d == a --> false; 

    Notou que agora (comparando com o exemplo anterior) as variáveis "d" e

“c” são diferentes?
Isso por que as referencias são diferentes, o operador == em objetos,
verifica se a referencia é igual.

Bom, sugiro fortemente que você leia o Tutorial JAVA2 da SUN, que é de

graça e é muito bom.
http://java.sun.com/docs/books/tutorial/index.html

Abraços

Claudio Miranda

masterpablo

Poxa que SHOW galera!

Valeu mesmo a todos!

julianofischer

Boa Rulio!
Tirou as dúvidas com uma explicação, não com o métodos de alguns professores, o famoso “porque é assim e pronto” …

vlws cara!

Criado 8 de março de 2008
Ultima resposta 10 de mar. de 2008
Respostas 7
Participantes 5