I'm trying to create a small login system in Java.
I have the following classes:
LoginController:
public static void main(String[] args) {
ArrayList<Usuario> listaUsuarios = UsuarioController.listaUsuarios;
// Adiciona um administrador padrao ao ArrayList de Usuarios
Usuario adminpadrao = new Usuario("Admin", "123456", 1);
UsuarioController.listaUsuarios.add(adminpadrao);
String opcao = "";
while (!opcao.equals("0")) {
LoginView lv = new LoginView();
AdminController ac = new AdminController();
UsuarioController uc = new UsuarioController();
Usuario u = lv.capturarLogin();
// Captura o usuario para fazer o login, verifica se ele esta presente no ArrayList e se ele é um administrador. Caso sim, ele vai para o menu de administrador, Caso não, ele vai para o menu de usuario comum
for (Usuario usuario : listaUsuarios) {
if (usuario.getUsuario().equals(u.getUsuario()) && usuario.getSenha().equals(u.getSenha())) {
if (usuario.getAdmin() == 1) {
ac.menuAdmin();
} else {
uc.menuUsuario();
}
}
}
}
}
AdminController:
public class AdminController {
Usuario user = new Usuario();
AdminView av = new AdminView();
ArrayList<Usuario> listaUsuarios = UsuarioController.listaUsuarios;
public void menuAdmin() {
String opcao = av.exibirMenuAdmin();
if (opcao.equals("1")) {
cadastrarUsuario();
} else if (opcao.equals("2")) {
listarUsuarios();
} else if (opcao.equals("3")) {
excluirUsuario();
} else if (opcao.equals("4")) {
Util.continuar();
}
}
public void cadastrarUsuario() {
Usuario u = av.capturarUsuario();
listaUsuarios.add(u);
Util.continuar("Usuario cadastrado com sucesso");
}
public void listarUsuarios() {
av.listarUsuarios(listaUsuarios);
Util.continuar("Pressione enter para continuar");
}
public void excluirUsuario() {
String u = av.capturarNomeUsuario();
for (Usuario usuario : listaUsuarios) {
if (usuario.getUsuario().equals(u)) {
Util.escreva("Usuario excluido: " + usuario.getUsuario());
listaUsuarios.remove(usuario);
} else {
Util.continuar("Usuario não encontrado");
}
}
}
However, after I log in with the default admin and try to register a new user, the compiler (Eclipse) returns the error:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at crm.controller.LoginController.main(LoginController.java:27)
This last line of error at crm.controller.LoginController.main(LoginController.java:27)
refers to the for (Usuario usuario : listaUsuarios) {
line in LoginController in the login verification step
I think it's some error in the ArrayList. I'm trying to use a single ArrayList for both classes.
I'd like help to resolve this error. Thank you in advance.