private String nome;
private String endereço;
private String cpf;
private int idade;
private Conta conta_1;
private Conta contaAdicional_2;
//não coloquei os gets/sets para ficar facil de vcs verem
}
tenho um array list chamando cli e dentro dele guardei varios objetos da classe Cliente. como posso pesquisar os indices de cada objeto pelo nome utilizando o indexOf??
Já tinha feito isso, mas o indice sempre retorna -1… vou colocar a parte do meu código
[code]public static void editarCliente()
{
Scanner sc = new Scanner(System.in);
int op_1,op_2=0,op_3 = 0;
while(op_2!=2)
{
System.out.println("Digite uma das opções abaixo");
System.out.println("----------------------------");
System.out.println("1 - Pesquisar Clientes");
System.out.println("2 - voltar");
op_2=sc.nextInt();
if(op_2==1)
{
Iterator busca = cli.iterator();
while (busca.hasNext()){ //resolveu o problema de reconhecer o primeiro da lista
Cliente clienteBusca = (Cliente)busca.next();
System.out.println("Digite o nome do cliente");
String nomeBusca;
nomeBusca=sc.next();
if(clienteBusca.getNome().equals(nomeBusca)) {
//string dentro do indice
System.out.println(clienteBusca.getNome()+" Está cadastrado!");
int indice = cli.indexOf(nomeBusca);
System.out.println(indice+" indice"); //verificar pq ta dando -1
System.out.println(" Desejá alterar dados deste cliente? (1-sim) (2-não)");
op_1=sc.nextInt();
Deu certo a principio, mas só estou encontrando o 1° nome cadastrado na lista, para encontrar o 2° nome vai aparecer que o cliente não está cadastrado, ai coloco o nome de novo e ele aparece como cadastrado, o mesmo acontece com o 3° cliente , apos a 3° tentativa ele encontra o nome cadastrado e assim por diante…
é como se o iterator só chegasse na conta que está na lista, depois que o laço terminasse, alguem sabe oq está acontecendo??
[code]public static void editarCliente()
{
Scanner sc = new Scanner(System.in);
int op_1,op_2=0,op_3;
while(op_2!=2)
{
System.out.println("Digite uma das opções abaixo");
System.out.println("----------------------------");
System.out.println("1 - Pesquisar Clientes pelo nome completo");
System.out.println("2 - voltar");
op_2=sc.nextInt();
sc.nextLine();// alternativa para esvaziar o buffer do teclado
if(op_2==1)
{
Iterator<Cliente> busca = cli.iterator();
System.out.println("Digite o nome do cliente");
String nomeBusca;
while (busca.hasNext()){
Cliente clienteBusca = (Cliente)busca.next();
nomeBusca=sc.nextLine();
if(clienteBusca.getNome().equals(nomeBusca)) { //compa
System.out.println("Está cadastrado!");
int indice = cli.indexOf(clienteBusca);
System.out.println(" Desejá alterar dados deste cliente? (1-sim) (2-não)");
op_1=sc.nextInt();[/code]
Meu problema ta aqui, é antes do indexOf, acontece que ele só compara o nomeBusca para o primeiro objeto da lista, para o segundo e em diante só compara depois de digitar 2 vezes em diante(no caso depois 2 laços do while)…
no console fica assim:
Digite uma das opções abaixo
1 - Pesquisar Clientes pelo nome completo
2 - voltar
1
Digite o nome do cliente
a
Não está cadastrado!
Digite o nome do cliente
a
Está cadastrado!
Desejá alterar dados deste cliente? (1-sim) (2-não)