Create a comparison string in Java

Asked

Viewed 182 times

0

When I put to execute the code by Eclipse and arrive at the part of typing the login gives an error which I do not and does not go to the next phase that is to enter the password. I would like a help on how to solve this problem, thank you. Obs. I am a student of Information System and I am in the first year yet, so I am layman in the subject yet.

inserir a descrição da imagem aqui

public class Principal {

    public static void main(String[] args) {

        // declaração das variáveis
        String nome, cidade, estado, senha, login, senha1, login1;
        int codigo, idade;
        double valor, valorFinal, desconto, valordescontado, ddesconto, vdescont;

        // leitura dos dados
        System.out.println("Bem vindo! by. EduardoMarecki");
        System.out.println("\nFaça seu cadastro abaixo - ");
        nome = Console.readString("\nDigite seu nome: ");
        idade = Console.readInt("Digite sua idade: ");
        cidade = Console.readString("Digite sua cidade: ");
        estado = Console.readString("Digite seu estado: ");
        login = Console.readString("Digite um login: ");
        login1 = Console.readString("Digite seu login novamente: ");
        senha = Console.readString("Digite uma senha: ");
        senha1 = Console.readString("Digite sua senha novamente: ");
        System.out.println("Cadastro efetuado com sucesso!");
        System.out.println("Faça o login para continuar: ");


        ***while (login != login1){
            login1 = Console.readString ("Digite seu login: ");
        }


        while (senha != senha1){
            senha1 = Console.readString("Digite sua senha: ");

        }***



        System.out.println("Login efetuado com sucesso! ");

        codigo = Console.readInt("\nInforme o código do produto: ");
        valor = Console.readDouble("Informe o valor do produto: R$ ");
        ddesconto = Console.readInt("Informe o valor do desconto: ");

        // processamento:

        vdescont = ddesconto / 100;

        // calculando o desconto:

        desconto = valor * vdescont;

        valorFinal = valor - desconto;
        valordescontado = valor - valorFinal;

        // saída de dados:
        System.out.println("\n\nParabéns! Compra finalizada com sucesso!");
        System.out.println("Dados cadastrados: ");
        System.out.println("Nome: " + nome);
        System.out.println("Idade: " + idade);
        System.out.println("Cidade: " + cidade);
        System.out.println("Estado: " + estado);
        System.out.println("\nInformações sobre a compra: ");
        System.out.println("Produto: " + codigo);
        System.out.println("Valor: R$ " + valor);
        System.out.println("Desconto de: %" + ddesconto);
        System.out.println("Valor final com desconto: R$ " + valorFinal);
        System.out.println("Valor descontado: " + valordescontado);



    }

}

1 answer

4

In java, the operators == and != compare the instance reference and not their value. When using == to compare instances in java you will be asking if the variables have the same reference.

If you want to know if two strings, or any other object in java, has the same value, you should use the function equals().

In doing login != login1, you are asking: The variable login does not have the same reference as the variable login1? And in this case it will ALWAYS return false, and will always iterate on that while.

Instead of:

while (login != login1){
    login1 = Console.readString ("Digite seu login: ");
}

Do:

while (login != null && !login.equals(login1)){
    login1 = Console.readString ("Digite seu login: ");
}

Do the same thing with the password.

With strings, particularly operators == and != can work. If you declare:

String s1 = "teste";
String s2 = "teste";

s1 == s1 will return true. But it happens because of string pool.

  • 1

    Just remembering that the equals is only used for objects, that is, primitive types will be compared with the operators == and != without major problems. Since the String type in Java is an Object, then you should use the equals.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.