Ir para conteúdo

POWERED BY:

Arquivado

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

Denis Martos

Comparar valores de um array de objetos com uma string

Recommended Posts

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 porem 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 banco
Usuario 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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolve pessoal, em outro forum me responderam o problema é que não posso comprar usando o == tenho que usar o .equals senão ele compara se as instancias dos objetos são iguais....

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois eh tinha lido o codigo todo ate ver q ja resolveu, para comprar String sempre use o equals.

aprendi isso a pouco tempo tbm dps de quebrar a cabeça. Que bom que conseguiu =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.