Ir ao conteúdo
  • Cadastre-se
rtk3752

RESOLVIDO meu algoritmo não funciona adequadamente, por que?

Recommended Posts

a função "login()" está retornando "false", mesmo quando é colocado o id e senha corretamente.
por que?
 

import java.util.Scanner;public class Teste{private static Scanner input;public static void main(String args[]){boolean login_check = login();if (login_check){menu();}else{System.out.println("WROOOONG!! :/");}}static boolean login(){String login_correct = "admin";String password_correct = "123456";String id;String senha;input = new Scanner(System.in);System.out.println("ID:");id = input.nextLine();System.out.println("Senha");senha = input.nextLine();if ((id == login_correct) && (senha == password_correct)){System.out.println("True!");return true;}else{System.out.printf("False!");return false;}}static void menu(){System.out.println("menu");}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

Não pude testar... mas veja, você está tentando comparar o usuário e senha do jeito errado.

Não que esteja 100% errado.. é o jeito que você está comparando.

 

Em java para comparar strings é usado uma função chamada  equals()

 

então tente desta forma:

if ((id.equals(login_correct)) && (senha.equals(password_correct)){}
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entrando um pouco mais a fundo no erro...

 

O problema é que essa forma de comparação "==" só funciona para tipos primitivos ... como int, byte, char ...

 

O String é um objeto, e todo o objeto é comparado pelo método equals() (ou equalsIgnoreCase() caso você não queira diferenciação entre maiúsculas e minúsculas), afinal você tem que comparar os valores de seus atributos.

 

Por isso, geralmente a gente implementa uma função toString() e uma equals() ...

 

PS.: Para comparar objeto com null, ai sim você pode colocar:

if (object == null) 
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Olá,

Não pude testar... mas veja, você está tentando comparar o usuário e senha do jeito errado.

Não que esteja 100% errado.. é o jeito que você está comparando.

 

Em java para comparar strings é usado uma função chamada  equals()

 

então tente desta forma:

if ((id.equals(login_correct)) && (senha.equals(password_correct)){}

funcionou!

 

Valeu neguin de cabelo azul! \o/

 

Abraço

 

@edit

 

Entrando um pouco mais a fundo no erro...

 

O problema é que essa forma de comparação "==" só funciona para tipos primitivos ... como int, byte, char ...

 

O String é um objeto, e todo o objeto é comparado pelo método equals() (ou equalsIgnoreCase() caso você não queira diferenciação entre maiúsculas e minúsculas), afinal você tem que comparar os valores de seus atributos.

 

Por isso, geralmente a gente implementa uma função toString() e uma equals() ...

 

PS.: Para comparar objeto com null, ai sim você pode colocar:

 

Saquei!

 

Valeu Itachi-san! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×