Pessoal estou com um problema basico
nao sei muito bem mexer com arraylist,
mas tenho um projeto grande a fazer e nao posso ficar mexendo com Array normais
oque eu quero é que o codCli esteja no mesmo indice dos outros dados
ex. no relatorio o usuario apenas digita o codigo Cliente e e já tem
os outros dados puxados.
tipo codigo = @23f
dados = nome:joao endereco:carmelias telefone:90198666 email:[email removido]
OBS: não conheco listas genericas ou linkadas, ou estrutura de dados
nao que eu seja preguicoso, mas tentei aprender e achei complicado, nao tenho muito tempo.
no lista.add ele esta adicionando no proximo termo.!
importjava.util.ArrayList;importjava.util.Scanner;/**@JavaCode:Cliente**/publicclassClienteimplementsCadastrable{Scanners=newScanner(System.in);privateStringcodCli;//@12fprivateStringnomeCli;privateStringenderecoCli;privateStringtelefoneCli;privateStringemailCli;ArrayList<String>lista=newArrayList<String>();ArrayList<String>relatorioSimpCli=newArrayList<String>();publicStringentradaDados(){System.out.println("codCliente do Cliente");codCli=s.nextLine();lista.add(codCli);System.out.println("nome do Cliente");nomeCli=s.nextLine();lista.add(nomeCli);System.out.println("endereco do Cliente");enderecoCli=s.nextLine();lista.add(nomeCli);System.out.println("telefone do Cliente");telefoneCli=s.nextLine();lista.add(nomeCli);System.out.println("email do Cliente");emailCli=s.nextLine();lista.add(nomeCli);/** * armazena um relatorio cada vez que é cadastrado algum cliente * @12f joao carmelias 90198666 [email removido] | * @72f manoel sete setembro 8894156 [email removido] | **/relatorioSimpCli.add(codCli+nomeCli+enderecoCli+telefoneCli+emailCli);returnrelaSimplesCli;}}//<Fim classe Cliente>
Java não é orientado a String e sim a objetos.
Vc precisa criar uma classe que irá representar os atributos do cliente.
Vc seta os atributos objeto dessa classe e adiciona a referencia desse objeto.
Isso que vc quer fazer faz apenas com um ArrayList.
Isso não tem haver com generics. O generics serve para informar que aquela lista vai receber tal referencia, no seu caso irá receber apenas String.
rodrigo.guri
talvez setar o valor toda vez que adicionar um item
problemas certo - pq transformamos dados em uma string só
se o codigo for 37 e em algum registro ter
endereco numero 37
ele pega este registro erradamente
posso separar por substring até o primeiro espaço
e separar o primeiro no cod em tokens
sei lá.
tem algum exemplo de referenciar por objeto, guardar o indice
o que eu preciso enteder é acessar o indice ou local em um relatorio
S
santos.fernando
Setar os dados de uma vez não irá transformar nada em String, cada tipo de dado ficará com seu tipo.
Se vc tiver um código 37 e um endereço 37 e vc precisar apagar, remover ou alterar, vc procurará pelo que?
Pelo codigo 37! Na mesma referencia que contém esse código, terá tudo referente a esse usuário, por ex: nome, tel, end, email, num, etc.
Então não tem como vc procurar pelo código 37 e o sistema te retornar pelo número 37, a não ser que vc esteja programando errado.
Não há necessidade de criar 2 ArrayList pra isso que vc quer. Com dá pra resolver brincando.
System.out.print("a lista contem o nome rodrigo?");
System.out.print("contem "+relatorioSimpCli.contains("rodrigo")); //false
System.out.print("contem "+lista.contains("rodrigo")); //true
System.out.println("index of "+relatorioSimpCli.indexOf("rodrigo")); //-1
System.out.println("inde of "+lista.indexOf("rodrigo")); //true
desconfio(nao sei), mas parece que em relatorioSimpliCli ele transformou tudo em uma string só com indice 0
fazendo assim relatorioSimpCli.add(codCli + nomeCli + enderecoCli + telefoneCli + emailCli);
os dados nao ficaram separados como disse o colega
tenho set e gets para cada variaveis
Se eu procurar na lista() pelo codigo 37, do jeito que faço nao obtenho nenhum dado apenas este codigo 37
:roll:
rodrigo.guri
conversando com o meu professor ele me disse pra criar um arraylist do tipo Cliente foi oque eu fiz
mais continuo sem entender, este código nao esta compilando
Obs: tenho uma classe Main, e uma classe Cliente que apenas contem os sets e gets usados aqui
não tem nenhum outro metodo de modificação.
importjava.util.ArrayList;importjava.util.Scanner;publicclassCadastroCliente{Scanners=newScanner(System.in);privateStringcodigo,nome,endereco,telefone,email;ArrayList<Cliente>listaClientes=newArrayList<Cliente>();//identado para melhor visualizacaovoidentradaDados(){System.out.println("codigo do cliente = ");codigo=s.nextLine();listaClientes.get(0).getCodCli(codigo);System.out.println("nome do cliente = ");nome=s.nextLine();listaClientes.get(0).getNomeCli(nome);System.out.println("endereco do cliente = ");endereco=s.nextLine();listaClientes.get(0).getEnderecoCli(endereco);System.out.println("telefone do cliente = ");telefone=s.nextLine();listaClientes.get(0).getTelefoneCli(telefone);System.out.println("email do cliente = ");email=s.nextLine();listaClientes.get(0).getEmailCli(email);}voidgeraRelatorioSimples(){System.out.println("mostrando os dados inseridos na posicao 0");System.out.println(listaClientes.get(0));}}//<fim classe CadastroCliente>
neste caso ele diz que excedeu o espaço de indice 0
oque será que meu professor quis dizer, quando disse para criar um arraylist de clientes
rodrigo.guri
pois é como não me ajudam rs
… eu estive me matando em cima deste problema, e acho que estou perto
da solução, no livro do Caelum obtive uma luz (sempre eles)