Alguien me dice donde esta el fallo?

layron
18 de Noviembre del 2003
Mirad el codigo, y decirme que es lo que pasa para que cuando introduzco los nombres y la palabra FIN, me da el siguiente error en ejecución: java.lang.NullPointerException
at java.lang.String.compareTo(String.java:748)
at Nombres.main(Nombres.java:27)
Exception in thread "main"

aquí va el código:

import java.io.*;

public class Nombres {


public static void main(String[] args) {
int N=10;
int indice;
String []nombres = new String[N];
String aux = null;
String FIN = "FIN";
int contador=0;
BufferedReader entrada = new BufferedReader( new InputStreamReader(System.in));
PrintWriter salida = new PrintWriter (System.out,true);
salida.println("Escribe nombres en mayúsculas (teclea FIN para finalizar):");
try{
do{
aux=entrada.readLine();
nombres[contador]=aux;
contador++;
}while(!aux.startsWith(FIN));
}catch (Exception e) {
System.err.println(e);
}
indice=nombres.length-1;
for (int j=0; j<indice; j++){
int auxiliar = nombres[j].compareTo(nombres[j+1]);
if (auxiliar < 0){
String comodin;
comodin=nombres[j];
nombres[j]=nombres[j+1];
nombres[j+1]=comodin;
}
}

for (int i=0; i<(indice);i++)
salida.println(nombres[i]);

}

}


heihachi
18 de Noviembre del 2003
El array nombres siempre es de 10 aunque no los uses todos (has hecho nombres=new String[N] con N=10)

Tendrías que mirar los que realmente usas (la variable contador cuando sales del while te lo indica) o usar la clase ArrayList o Vector o alguna de estas en lugar de un String[].

Saludos!