Galera estou tentando criar uma condição para comparar com a String do meu arraylist,
meio q tipo uma seleção eu vou citar a String e eu queria comparar se dentro do meu arraylist tem uma String com o mesmo nome, e esta dando erro ele pula para cliente não cadastrado mesmo eu sabendo q eu cadastrei um cliente com mesmo nome, pfv me ajudem…
publicvoidListarClientes(){Iteratori=clientes.iterator();System.out.println("\n\tCLIENTES CADASTRADOS\n");while(i.hasNext()){cliente=(Cliente)i.next();System.out.println("CLIENTE "+(j+=1)+"º: “+cliente.getNome());}System.out.print(”\nSELECIONE O CLIENTE: ");this.nome=newScanner(<ahref="http://System.in">System.in</a>).nextLine().toUpperCase();Iteratorit=clientes.iterator();while(it.hasNext()){cliente=(Cliente)it.next();if(cliente.getNome().equals(this.nome)){this.nome=cliente.getNome();break;}else{System.out.println(“CLIENTENÃOESTÁCADASTRADO”);}}
tipo ele só esta comparando a primeira posição da lista, se na posição tiver [0] =" Gabriel "; e na posição [1] = " JOÃO "; e eu colocar JOÃO o programa informa cliente não cadastrado.
D
darlan_machado1 like
Teu código está um tanto confuso.
Esse é o trecho de código onde você compara o tal valor lido com os que cadastrou.
Acontece que você tem um else que já informa que o cliente não foi cadastrado, mesmo sem ter sido verificada a lista toda.
Minha sugestão, crie uma variável Cliente e só valide após ler todos os elementos da lista
ta acontecendo o seguinte no primeiro laço se eu cadastrei cliente gabriel e selecionar ele, funciona de boa, agora quando vou selecionar outra vez e coloco um cliente que n tem na lista aparece cliente: gabriel .
D
darlan_machado1 like
Existe uma coisa chamada escopo de variável.
Isso é o que define onde e quando a variável é criada e, principalmente, em que partes (leia-se métodos) o valor atribuído a ela se mantém.
Posta o código todo (por favor, use o formatador do código, depois de colar o mesmo aqui, seleciona o código todo e clica no botão </> acima do editor)
G
Gabriel_Barreto
packagepedidos;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.Scanner;publicclassSistema{Scannerteclado=newScanner(System.in);//LISTA PARA CLIENTESArrayListclientes=newArrayList();//LISTA PARA EDITORASArrayListeditoras=newArrayList();//LISTA PARA PEDIDOSArrayListpedidos=newArrayList();intes,j=0,cont=0,x=0;Stringnome,nomeEdi;Clientecli=null;//CLASSES INSTANCIADASClientecliente=newCliente();Editoraeditora=newEditora();Pedidopedido=newPedido();//METODOS PERSONALIZADOS PARA CLIENTESpublicvoidCadastrarClientes(){System.out.println("\n\tCADASTRO DE CLIENTES\n");do{cliente=newCliente();System.out.print("NOME DO CLIENTE: ");cliente.setNome(newScanner(System.in).nextLine().toUpperCase());System.out.print("TELEFONE: ");cliente.setTelefone(newScanner(System.in).nextLine());System.out.print("DOCUMENTO: ");cliente.setDoc(newScanner(System.in).nextLine());cont++;clientes.add(cliente);System.out.println("\n(0) ----SAIR\n(1) ----NOVO CLIENTE");System.out.print("OPÇÃO: ");es=teclado.nextInt();System.out.println("");}while(es!=0);}publicvoidListarClientes(){System.out.println("\n\tCLIENTES CADASTRADOS\n");j=0;Iteratori=clientes.iterator();while(i.hasNext()){cliente=(Cliente)i.next();System.out.println("CLIENTE "+(j+=1)+"º: "+this.cliente.getNome());}System.out.print("\nSELECIONE O CLIENTE: ");this.nome=newScanner(System.in).nextLine().toUpperCase();for(Iteratorit=this.clientes.iterator();it.hasNext();){this.cliente=(Cliente)it.next();if(this.cliente.getNome().equals(this.nome)){cli=cliente;break;}}if(null==cli){System.out.println("Cliente não cadastrado");}else{System.out.println("cliente: "+cli.getNome());}}//FIM DOS MÉTODOS PARA CLIENTES//METODOS PERSONALIZADOS PARA EDITORApublicvoidCadastrarEditora(){System.out.println("\n\tCADASTRO DE EDITORAS\n");do{editora=newEditora();System.out.print("EDITORA: ");editora.setNomeEditora(newScanner(System.in).nextLine().toUpperCase());editoras.add(editora);System.out.println("\n(0) ----SAIR\n(1) ----NOVA EDITORA");System.out.print("OPÇÃO: ");es=teclado.nextInt();System.out.println("");}while(es!=0);}publicvoidListarEditoras(){Iteratorx=editoras.iterator();j=0;System.out.println("");while(x.hasNext()){editora=(Editora)x.next();System.out.println("EDITORA "+(j+=1)+"º: "+this.editora.getNomeEditora());}System.out.print("\nSELECIONE A EDITORA: ");this.nomeEdi=newScanner(System.in).nextLine().toUpperCase();for(Iteratorxy=this.editoras.iterator();xy.hasNext();){this.editora=(Editora)xy.next();if(this.editora.getNomeEditora().equals(this.nomeEdi)){System.out.println("EDITORA CADASTRADA");break;}else{System.out.println("EDITORA NÃO CADASTRADA");}}}//FIM DOS MÉTODOS PARA EDITORAS//MÉTODOS PERSONALIZADOS PARA PEDIDOSpublicvoidRealizarPedido(){do{System.out.println("\nPEDIDO DO CLIENTE "+this.nome.toUpperCase());System.out.println("");pedido=newPedido();pedido.setCodigo(x+=1);pedido.setEditora(this.nomeEdi);pedido.setCliente(this.nome);System.out.print("NOME DO LIVRO: ");pedido.setLivro(newScanner(System.in).nextLine());System.out.print("QUANTIDADE DE LIVROS: ");pedido.setQtd(teclado.nextInt());pedidos.add(pedido);System.out.println("\n(0) ----SAIR\n(1) ----NOVO PEDIDO");System.out.print("OPÇÃO: ");es=teclado.nextInt();System.out.println("");}while(es!=0);}publicvoidPedidosEmAndamento(){Iteratory=pedidos.iterator();System.out.println("\n\tPEDIDOS EM ANDAMENTO\n");while(y.hasNext()){pedido=(Pedido)y.next();System.out.println("CLIENTE "+pedido.getCliente());System.out.println("EDITORA "+pedido.getEditora());System.out.println("NOME DO LIVRO "+pedido.getLivro());System.out.println("CÓDIGO DO PEDIDO: "+pedido.getCodigo());System.out.println("");}}publicvoidListarPedidos(){Iteratory=pedidos.iterator();System.out.println("\n\tLISTA DOS PEDIDOS\n");while(y.hasNext()){pedido=(Pedido)y.next();System.out.println("EDITORA "+pedido.getEditora());System.out.println("NOME DO LIVRO "+pedido.getLivro());System.out.println("");}}//FIM DOS MÉTODOS PARA PEDIDOS
}
essa é a classe sistema q criei, deixa eu te explicar, estou criando um programa pro projeto da faculdade e optei em um programa de fazer pedidos de livros, e nele preciso cadastrar os clientes cadastrar as editoras e fazer o pedido na hora de fazer o pedido quero selecionar o cliente para prosseguir, se o cliente não estiver cadastrado quero q o finalize e diga cliente não cadastrado e volte pro menu q criei na classe principal
D
darlan_machado
Veja o que falei sobre escopo de variáveis.
Você declarou diferente do que sugeri. Assim sendo, se você não seta cli como null depois da primeira leitura, nunca vai funcionar direito.
Essa variável precisa ser local, obrigatoriamente, como eu sugeri
G
Gabriel_Barreto
Muito obrigado man, me ajudou bastante, se não for muito incomodo pode me explicar detalhadamente oque esse comando Cliente cli = null esta fazendo neste código e tbm n entendi o if(null == cli)
publicvoidListarClientes(){Clientecli=null;System.out.println("\n\tCLIENTES CADASTRADOS\n");j=0;Iteratori=clientes.iterator();while(i.hasNext()){cliente=(Cliente)i.next();System.out.println("CLIENTE "+(j+=1)+"º: "+this.cliente.getNome());}System.out.print("\nSELECIONE O CLIENTE: ");this.nome=newScanner(System.in).nextLine().toUpperCase();for(Iteratorit=this.clientes.iterator();it.hasNext();){this.cliente=(Cliente)it.next();if(this.cliente.getNome().equals(this.nome)){cli=cliente;break;}}if(null==cli){System.out.println("Cliente não cadastrado");}else{System.out.println("cliente: "+cli.getNome());}}
D
darlan_machado2 likes
Declaração do objeto cli da classe Cliente, definido como null (necessariamente, não é preciso definir o valor de um objeto como nulo, ainda mais que iremos fazer uma verificação no mesmo).
Aqui eu apenas verifico se o valor do objeto cli foi alterado, considerando que ele foi declarado como nulo, se o mesmo sofreu alteração, essa comparação retorna false e, por isso, apresenta o nome do cliente.
Lembre-se, quando você usou a variável com o escopo da classe, você teve problemas, pois, na segunda execução, tinha um valor definido para ela. Agora, com essa abordagem, você só terá o valor enquanto aquele método estiver sendo executado.
G
Gabriel_Barreto
deixa eu ver se entendi bem, declarando o objeto cli da classe Cliente e definindo como null,
quer dizer q o objeto vai ser todo preenchido com null.
mais como o eu tou fazendo uma comparação de String na condição if acima, e dps atrbuindo
os dados q foram verdadeiros no objeto cli e assim preenchendo o objeto com os nomes que tiveram comparação como verdadeira, sendo assim se eu tiver 2 nomes verdadeiros q entraram nessa condição e um nome foi falso vai para as outras condição, um exemplo: "GABRIEL", "DARLAN", NULL
sendo assim ele verifica se os nomes é verdadeiro , se n for verdadeiros ele atribui o valor null.
supondo q eu selecione um cliente que não esteja cadastrado ex JOÃO, ele irá atribuir no objeto cli como JOÃO == null e irá informar "Cliente não cadastrado".
é mais ou menos assim??
D
Solucao aceita
darlan_machado1 like
Não.
Você cria o objeto cli como nulo.
Aí você tem 2 possibilidades: se o nome a ser pesquisado consta na lista, o valor da variável cli é alterado para aquele cliente com o nome procurado.
Ou, se não existe nenhum cliente com aquele nome, ele se mantém nulo.
A validação, após o laço, é para certificar que cli é ou não nulo e de acordo com cada situação, imprimir algo.
G
Gabriel_Barreto
agora eu entendi, mt obrigado cara, deus te abençoe !!