mas só consigo adicionar um item , quando eu chamo o metodo adicionar novamente eu adiciono na primeira posição do array
como adicionar varios elementos sem usar ArrayList ?
Mas por enquanto, apenas declare sua variável k como um atributo da classe, antes do método.
O problema é que sempre que chama o método adicionar você está atribuindo a ela o valor -1, fazendo o índice do array ser sempre o mesmo.
Entendeu?
P
paulo.rogeriobr
packageprincipal;/** * * Classe Teste para criar uma simples agenda de contatos utilizando vetor , ou seja sem uso de Collection * e sem encapsulamento (get e set) */publicclassContato{publicStringnome;String[]contatos=newString[10];intposicao;publicstaticvoidmain(String[]args){newContato().adicionar("Teste");newContato().listar();}publicvoidadicionar(Stringnome){for(inti=0;i<this.contatos.length;i++){if(this.contatos[i]!=null){this.posicao+=1;}}this.contatos[posicao]=nome;}publicvoidlistar(){for(Strings:this.contatos){System.out.println(s);}}}
isso não resolve o problema! sabe como adiciono varios elementos até tamanho do vetor???
P
paulo.rogeriobr
packageprincipal;/** * * Classe Teste para criar uma simples agenda de contatos utilizando vetor , ou seja sem uso de Collection * e sem encapsulamento (get e set) */publicclassContato{publicStringnome;String[]contatos=newString[10];intposicao;publicstaticvoidmain(String[]args){newContato().adicionar("Teste");newContato().listar();}publicvoidadicionar(Stringnome){for(inti=0;i<this.contatos.length;i++){if(this.contatos[i]!=null){this.posicao+=1;}}this.contatos[posicao]=nome;}publicvoidlistar(){for(Strings:this.contatos){System.out.println(s);}}}
entendi mais não resolveu né?
fredericomaia10
Crie só uma instância da sua classe Contato e adicione mais de uma vez no main.
Resolve sim.
fredericomaia10
Ou você quer adicionar “Teste” em todas as posições?
P
paulo.rogeriobr
não é que uso uma classe Main com um metodo menu que tem um switch com opcao de inserir
e nela eu crio uma instancia de Contatos e adiciona a um vetor na classe contato e quando voltou ao menu com recursividade ele nao adiciona mais nada
somente adiciona um elemento entendeu???
P
paulo.rogeriobr
quero adicionar nomes diferentes no vetor! o que consegui fazer até agora foi inserir na primeira posicao sabe como fazer ?
fredericomaia10
Caso esteja instanciando a classe Contato (dando um new) toda vez que volta com recursividade ele vai criar um objeto diferente toda vez.
Se estiver fazendo isso, mantenha uma instância da classe apenas.
packageprincipal;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){newMain().menu();}publicvoidmenu(){Scannersc=newScanner(System.in);System.out.println("Digite:\n[1] - INSERIR\n[2] - EXCLUIR\n[3] - EDITAR\n[4] - CONSULTAR\n[5] - LISTAR\n[0] - SAIR DO PROGRAMA");intopcao=newInteger(sc.nextLine());switch(opcao){case0:System.out.println("Fim do programa!");menu();break;case1:Contatocontato=newContato();System.out.println("Digite o nome:");Stringnome=sc.nextLine();contato.adicionar(nome);contato.listar();System.out.println("Adicionado com Sucesso!");menu();break;default:System.out.println("Opção Inválida. Tente novamente!");menu();break;}sc.close();}}
packageprincipal;/** * * Classe Teste para criar uma simples agenda de contatos utilizando vetor , ou seja sem uso de Collection * e sem encapsulamento (get e set) */publicclassContato{publicStringnome;String[]contatos=newString[10];intposicao;publicvoidadicionar(Stringnome){for(inti=0;i<this.contatos.length;i++){if(this.contatos[i]!=null){this.posicao+=1;}}this.contatos[posicao]=nome;}publicvoidlistar(){for(Strings:this.contatos){System.out.println(s);}}}
Esse é o codigo até agora? consegui atribuir mais de um elemento sem usar ArrayList ou alguma Collection >>>??????
fredericomaia10
Cara, pare de instanciar a classe Contato toda hora (rs).
Se você faz isso:
new Contato().adicionar("primeiro"); //aqui você criou uma instância da classe
new Contato().adicionar("segundo"); //aqui outra, seu elemento não vai estar no mesmo array
Tente como está abaixo, colocando a classe Contato como um atributo, sendo instanciado só uma vez.
packageprincipal;importjava.util.Scanner;publicclassMain{Contatocontato=newContato();publicstaticvoidmain(String[]args){newMain().menu();}publicvoidmenu(){Scannersc=newScanner(System.in);System.out.println("Digite:\n[1] - INSERIR\n[2] - EXCLUIR\n[3] - EDITAR\n[4] - CONSULTAR\n[5] - LISTAR\n[0] - SAIR DO PROGRAMA");intopcao=newInteger(sc.nextLine());switch(opcao){case0:System.out.println("Fim do programa!");menu();break;case1:System.out.println("Digite o nome:");Stringnome=sc.nextLine();contato.adicionar(nome);contato.listar();System.out.println("Adicionado com Sucesso!");menu();break;default:System.out.println("Opção Inválida. Tente novamente!");menu();break;}sc.close();}}
P
paulo.rogeriobr
Cara já está adicionando mais agora tenho outro problema se eu adiciono duas posições no vetor fica tudo bem mas quando coloco a terceira ele pula uma posicao e salva mais até aqui tá funcionando a logica
fredericomaia10
Ok, mas entendeu o problema anterior né? Próximo. :)
Sua lógica está meio complexa na classe Contato, então vamos simplificar. Substitua ela por este código.