Ordenar um vetor de String (Resolvido)

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

Alguem teria alguma dica ?

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.

Tu tb pode criar uma lista de strings e usar Collection.sort

List<String> stringList; .... Collections.sort(stringList, String.CASE_INSENSITIVE_ORDER);

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.

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.

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=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:

agenda.set(0, "Nome alterado");

e para adicionar mais 1 elemento a lista criada:

agenda.add("Novo nome");

Aqui tem uns exemplos de como manipular ArrayList… dá uma olhada, pois pode te ajudar a entender melhor como setar, excluir, atualizar.
http://www.java2s.com/Tutorial/Java/0140__Collections/0160__ArrayList.htm

gabbardo valeu pelas dicas e pela referencia do site, consegui alterar os dados, era um erro na sintaxe =D