-
Conteúdo Similar
-
Por gustavo.abarroso
Estou tentando criar uma lista genérica de clientes, onde posso adicionar pessoasFisicas e pessoasJuridicas.
Dentro da classe clientes possuo os atributos nome, lista de endereços e limite de crédito.
A classe pessoaFisica herda de cliente os atributos acima citados além de possuir o atributo cpf.
A classe pessoaJuridica herda de cliente seus atributos e possui também, nomeFantasia e cnpj.
O problema que está acontecendo é o seguinte: na hora que cadastro mais de uma pessoa física por exemplo e puxar o relatório, me vem a lista de endereços inteira (conforme foto em anexo) ao invés de vim a lista da pessoa de cada posição do ArrayList de clientes. Como resolvo isso?
public void cadastrar() { int op, resp; System.out.println("\n==[Cadastro de clientes]=="); System.out.println("Digite 1 para cadastrar pessoa fisica."); System.out.println("Digite 2 para cadastrar pessoa juridica."); System.out.print("=> "); op = input.nextInt(); switch (op) { case 1: System.out.println("\n==[Pessoa fisica]=="); System.out.print("Informe o nome: "); nome = inputs.nextLine(); do { listaEndFisica.add(retornaUmEndereco()); System.out.println("Continuar cadastrando endereços? 1-Sim/0-Não"); resp = input.nextInt(); } while (resp != 0); System.out.print("Informe o limite de crédito: "); limiteCredito = input.nextDouble(); System.out.print("informe o cpf: "); cpf = inputs.nextLine(); PessoaFisica pessoaFisica = new PessoaFisica(nome, listaEndFisica, limiteCredito, cpf); listaCliente.add(pessoaFisica); System.out.println("\nPessoa fisica adicionado com sucesso! "); break; case 2: System.out.println("\n==[Pessoa Juridica]=="); System.out.print("Informe o nome: "); nome = inputs.nextLine(); do { listaEndJuridica.add(retornaUmEndereco()); System.out.println("Continuar cadastrando endereços? 1-Sim/0-Não"); resp = input.nextInt(); } while (resp != 0); System.out.print("Informe o limite de crédito: "); limiteCredito = input.nextDouble(); System.out.print("Informe o nome fantasia: "); nomeFantasia = inputs.nextLine(); System.out.print("Informe o cnpj: "); cnpj = inputs.nextLine(); PessoaJuridica pessoaJuridica = new PessoaJuridica(nome, listaEndJuridica, limiteCredito, nomeFantasia, cnpj); listaCliente.add(pessoaJuridica); System.out.println("\nPessoa juridica adicionado com sucesso! "); break; default: System.out.println("opção inválida! "); } } public void relatorio() { if (listaCliente.isEmpty()) { System.out.println("Não existem clientes cadastrados! "); } else { for (Cliente c : listaCliente) { if (c instanceof PessoaFisica) { System.out.println("\n-=[Pessoas Fisicas]=-"); System.out.println("Nome: " + c.getNome()); System.out.println("-=[Endereço(s) Associado(s)]<-"); for (Endereco end : listaEndFisica) { System.out.println("Logradouro: " + end.getLogradouro()); } System.out.println("Limite de crédito: " + c.getLimiteDeCredito()); System.out.println("Cpf: " + ((PessoaFisica) c).getCpf()); } else if (c instanceof PessoaJuridica) { System.out.println("\n-=[Pessoas Juridicas]=-"); System.out.println("Nome: " + c.getNome()); System.out.println("-=[Endereço(s) Associado(s)]<-"); for (Endereco end : listaEndJuridica) { end.getLogradouro(); System.out.println("Logradouro: " + end.getLogradouro()); } System.out.println("Limite de crédito: " + c.getLimiteDeCredito()); System.out.println("Nome fantasia: " + ((PessoaJuridica) c).getNomeFantasia()); System.out.println("Cnpj: " + ((PessoaJuridica) c).getCnpj()); } } } }
-
Por Laurofelipe
Boa tarde.
Estou tentando criar um método para busca de pessoa (usuario) por nome.
Logo, deve receber como parâmetro o nome à procurar e devolver uma lista (return lista;) nula ou com elementos.
Estou recebendo como retorno o erro abaixo.
[ERROR] 1
java.lang.ArrayIndexOutOfBoundsException: 1
Como não consigo ler o nome (System.out....) logo antes mesmo de declarar o ArrayList<Usuario>, devo entender que desta forma não é possível passar parâmetro para o método.
Tem como re-escrever este método? São duas questões fundamentais: Preciso passar um parâmetro, e devo receber um arraylist para ser tratado fora desta classe, em outro projeto. Deve ser consumido por uma aplicação android.
Se alguém puder dar-me uma luz, agradeço antecipadamente.
Lauro
public ArrayList<Usuario> usuario---ome(String nome) {
// nome de pesquisa, começando ou que contenha, depende do contexto.
ArrayList<Usuario> lista = new ArrayList<Usuario>();
try {
Connection conn = ConectaMySql.obtemConexao();
String sqlConsulta = "SELECT * FROM usuario WHERE usuario_nome=?";
PreparedStatement ppStm = conn.prepareStatement(sqlConsulta);
ppStm.setString(1, "%"+ nome+"%");
ResultSet rsUsuario = ppStm.executeQuery();
while(rsUsuario.next()) {
Usuario user = new Usuario();
user.setId(rsUsuario.getInt(1));
user.setNome(rsUsuario.getString(2));
ser.setNomeLogin(rsUsuario.getString(3));
user.setSenha(rsUsuario.getString(4));
user.setCodigoAcesso(rsUsuario.getString(5));
lista.add(user);
}
conn.close();
} catch (Exception e){
e.printStackTrace();
}
return lista;
}
-