Create a comparison string in Java

0

When I put in to run the code by Eclipse and I get in the part of typing the login gives an error which I do not and will not go to the next stage that is to enter the password. I wanted some help on how to solve this problem, thank you. Note: I am an Information System student and I am still in the first year, so I am still a lay subject.

publicclassPrincipal{publicstaticvoidmain(String[]args){//declaraçãodasvariáveisStringnome,cidade,estado,senha,login,senha1,login1;intcodigo,idade;doublevalor,valorFinal,desconto,valordescontado,ddesconto,vdescont;//leituradosdadosSystem.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);



    }

}
    
asked by anonymous 14.03.2018 / 05:19

1 answer

4

In java, the == and != operators 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 equals() function.

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

Instead of:

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

Make:

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

Do the same thing with the password.

With strings, in particular, the == and != operators can work. If you declare:

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

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

    
14.03.2018 / 06:14