Ir ao conteúdo
  • Cadastre-se

Comparar valores de um array de objetos com uma string


denismartos

Posts recomendados

Bom dia pessoal,
 
Estou a 3 dias me matando com um trabalho da faculdade.
 
A propsta é a seguinte tenho que fazer um sistema de login e senha porém sem banco de dados.
 
Então eu criei 2 classes, uma de Usuario que tem, usuario e senha e outra com nome de bancodados que armazena um array do Obejto Usuario, então toda vez que adiciono um usuario eu adiciono esse usuario na minha classe banco de dados dentro de um array.
Até ai tudo funcionando certinho, o problema é que antes de adiionar o usuário eu criei um metodo que percorre todos os objetos do array de usuarios pegando o nome do usuario e comparando com o usuario que digitaram, só que parece que ele não consegue fazer a comparação correta e ele nunca me retorna falando que o usuario já ta cadastrado.

 

Só que se eu chamar o outro metodo que criei na classe banco de dados que exibe todos os usuarios ele lista todos e se eu cadastrei 10 com o mesmo nome ele lista os 10.


Vou postar o código, já estou deseserado com isso.

 

MEU SERVLET

import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class registrarServlet */@WebServlet("/registrarServlet")public class registrarServlet extends HttpServlet {private static final long serialVersionUID = 1L;           /**     * @see HttpServlet#HttpServlet()     */    public registrarServlet() {        super();        // TODO Auto-generated constructor stub    } /*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { bancoDados bd; if(getServletContext().getAttribute("bancoDados") == null) {bd = new bancoDados();} else {bd = (bancoDados) getServletContext().getAttribute("bancoDados");} String usuario = request.getParameter("usuario");String senha = request.getParameter("senha");String mensagem = "";boolean usuarioExiste = false; //cadastra no bancoUsuario u = new Usuario(usuario,senha); usuarioExiste = bd.procuraUsuario(usuario); if(usuarioExiste == false) {bd.adicionaUsuario(u);getServletContext().setAttribute("bancoDados", bd);mensagem = "Usuário cadastrado com sucesso !";} else {mensagem = "Usuário ja cadastrado";}  request.setAttribute("msgs", mensagem);request.getRequestDispatcher("/jsp/cadastroResposta.jsp").forward(request, response);} }

 

MINHA CLASSE bancoDados

import java.util.ArrayList;  public class bancoDados { ArrayList<Usuario> Usuarios = new ArrayList<>();ArrayList<Object> Agenda = new ArrayList<>(); public void adicionaUsuario(Usuario Usuario) {Usuarios.add(Usuario);} public void adicionaAgenda(Object Registro) {Agenda.add(Registro);} public boolean procuraUsuario(String usuario) {for (int i = 0; i < Usuarios.size(); ++i) {  Usuario u = Usuarios.get(i);     if(u.getUsuario() == usuario) {    return true;   }    }return false; } public String exibeUsuarios(){String x = "";for (int i = 0; i < Usuarios.size(); ++i) {  Usuario u = Usuarios.get(i); x = x + "<br>" + u.getUsuario();}return x;} } 

 

MINHA CLASSE USUARIO

public class Usuario { String usuario;String senha; public String getUsuario() {return usuario;} public Usuario (String usuario, String senha) {this.usuario = usuario;this.senha = senha;} public boolean validaUsuario() {if(usuario.length() < 3 || usuario.length() > 10 || senha.length() < 3 || senha.length() > 10) {return false;}return true;} }

 

Quem puder por favor me ajude já não sei mais o que fazer, acho que ele da erro ao comparar u.getUsuario() == usuario, tem outra forma de efetuar a comparação?

Link para o comentário
Compartilhar em outros sites

Amigo, no java quando você utiliza o operador de igualdade "==" ele compara se a instancia dos objetos são a mesma. Quando você quer verificar se o conteúdo dos objetos são iguais você deve utilizar o método equals.

 

No seu caso ficaria assim:

if(u.getUsuario().equals(usuario)) {    return true;}

OBS: Para a classe String também tem o método equasIgnoreCase, que ignora as diferenças de letras maiúsculas e minusculas.

 

 

Abraços

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...