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.
import java.util.Arrays;
import java.util.Scanner;
public class Agenda {
private String[] agenda = new String[25];
private String nome;
private int idade;
private boolean ativo;
private int idx;
private int numero;
void adiciona() {
Scanner entrada = new Scanner(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;
}
void escolha() {
numero = 0;
Scanner entrada = new Scanner(System.in);
for (String i : 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) {
case 1:
adiciona();
break;
case 2:
exibir();break;
case 3:
ordenar(); break;
case 4:
System.out.println("Saindo");
return;
}
}
}
void exibir() {
for (int i = 0; i < idx; i++) {
System.out.println(agenda[i]);
}
}
void remover() {
agenda[idx--] = nome;
}
public static void main(String args[]) {
Agenda a = new Agenda();
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.
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)
É 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…
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Agenda2 {
private List<String> agenda = new ArrayList<String>();
private String nome;
private int idade;
private boolean ativo;
private int idx;
private int numero;
static int contato;
void adiciona() {
Scanner entrada = new Scanner(System.in);
for (int i = 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");
}
}
void remover() {
System.out.println("Digite nome para remoção");
Scanner entrada = new Scanner(System.in);
nome = entrada.nextLine();
boolean remove = agenda.remove(nome);
}
void ordenar() {
Collections.sort(agenda);
}
void exibir() {
System.out.println(agenda);
}
void escolha() {
Scanner entrada = new Scanner(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) {
case 1:
adiciona();
break;
case 2:
exibir();
break;
case 3:
ordenar();
break;
case 4:
remover();
break;
case 5:
System.out.println("Saindo");
return;
}
}
}
public static void main(String args[]) {
Agenda2 a = new Agenda2();
a.escolha();
}
}
no caso para alterar to pensando em fazer:
void alterar(){
Scanner entrada = new Scanner(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 ?
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.
[quote=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 =/[/quote]
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: