Boa tarde
Estou com um problema em uma classe minha, preciso ordenar um vetor que contem as informações nome e idade, para fazer uma agenda posteriormente.
importjava.util.Arrays;importjava.util.Scanner;publicclassAgenda{privateString[]agenda=newString[25];privateStringnome;privateintidade;privatebooleanativo;privateintidx;privateintnumero;voidadiciona(){Scannerentrada=newScanner(System.in);System.out.println("Digite nome do contato");nome=entrada.nextLine();System.out.println("");System.out.println("Digite a idade");idade=entrada.nextInt();agenda[idx++]="Nome:"+nome+" "+"Idade: "+idade;}voidescolha(){numero=0;Scannerentrada=newScanner(System.in);for(Stringi:agenda){System.out.println("Digite 1 para add, 2 para exibir, 3 para ordenar e 4 para sair");System.out.println("");numero=entrada.nextInt();switch(numero){case1:adiciona();break;case2:exibir();break;case3:ordenar();break;case4:System.out.println("Saindo");return;}}}voidexibir(){for(inti=0;i<idx;i++){System.out.println(agenda[i]);}}voidremover(){agenda[idx--]=nome;}publicstaticvoidmain(Stringargs[]){Agendaa=newAgenda();a.escolha();}}
tentei usar o Arrays.sort(agenda)
Mas ele está dando nullPointer
e também tentei usar o comparator (Object obj1, Object obj2) também
Arrays.sort exige que nenhum dos elementos seja null, o que deve ter ocorrido porque você não encheu o array completamente.
Crie um novo array, dimensionado com o valor exato da quantidade de instrumentos, e o ordene.
gabbardo
Tu tb pode criar uma lista de strings e usar Collection.sort
Muito obrigado, acabei usando o List mesmo =D, ficou até mais facil para fazer os outros métodos, só espero que o professor aceite =p.
gabbardo
Se ele não especificou que tinha q ser Array de String, vai ter q aceitar, pois é Java.
Se ele exigir q retorne um array de String, pega o objeto lista e dá um .toArray().
8)
xxabxx
É aula sobre estrutura de dados =/
Ai preciso fazer uma agenda
que tem os atributos: nome, idade, salario, bonificação
que tem os seguintes métodos: adicionar, alterar, deletar, buscar por nome, exibir e ordenar.
Segue código abaixo…
importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Scanner;publicclassAgenda2{privateList<String>agenda=newArrayList<String>();privateStringnome;privateintidade;privatebooleanativo;privateintidx;privateintnumero;staticintcontato;voidadiciona(){Scannerentrada=newScanner(System.in);for(inti=0;i<=0;i++){System.out.println("Digite nome do contato");nome=entrada.nextLine();System.out.println("Digite a idade");idade=entrada.nextInt();agenda.add("Nome: "+nome+" "+"Idade: "+idade+"\n");}}voidremover(){System.out.println("Digite nome para remoção");Scannerentrada=newScanner(System.in);nome=entrada.nextLine();booleanremove=agenda.remove(nome);}voidordenar(){Collections.sort(agenda);}voidexibir(){System.out.println(agenda);}voidescolha(){Scannerentrada=newScanner(System.in);while(numero!=5){System.out.println("Digite 1 para adicionar, 2 para exibir, 3 para ordenar, 4 para excluir e 5 para sair");numero=entrada.nextInt();switch(numero){case1:adiciona();break;case2:exibir();break;case3:ordenar();break;case4:remover();break;case5:System.out.println("Saindo");return;}}}publicstaticvoidmain(Stringargs[]){Agenda2a=newAgenda2();a.escolha();}}
no caso para alterar to pensando em fazer:
voidalterar(){Scannerentrada=newScanner(System.in);System.out.println("Digite numero 'indice' do usuario");idx=entrada.nextInt();System.out.println("Digite novo nome");nome=entrada.nextLine();agenda.set(idx,nome);}
tipo o usuario através do scanner especifica o valor do indice e tbm o novo nome do usuario que ele quer.
ou estou errado ?
gabbardo
Pode fazer isso se tu quiser ALTERAR a string, no caso o nome, q está naquela posição da lista.
Se tu quiser adicionar um novo nome, basta colocar agenda.add(nome);
Só nao esquece de chamar a ordenação de novo.
xxabxx
Tentei fazer aqui, ele pede o numero do indice, só que o nome ele não esta deixando eu digitar, ele ta pulando e de vez alterar ele excluir da
List =/
gabbardo
xxabxx:
Tentei fazer aqui, ele pede o numero do indice, só que o nome ele não esta deixando eu digitar, ele ta pulando e de vez alterar ele excluir da
List =/
Se tu incluir nulo em algum indice com o .set(idx, nome) ai vai excluir mesmo, pois o objeto vai ficar nulo naquela posição.
E não esquece que a lista começa em 0 até N.
Tipo se quiser mudar o nome do 1º elemento da lista tu vai ter q colocar: