Declaracion y ordenamiento de arreglos

sasha13
03 de Septiembre del 2004
Hola, buenas tardes, necesito ayuda con un problemita, que es el siguiente:
por teclado introducen una arreglo de string, que contienen el nombre de una persona y su nota, tengo sacarle el porcentaje a la nota grabarla en un arreglo y luego el programa debe imprimir el nombre de la persona y su porcentaje, debe estar ordenado de menor a mayor...

Kurz
03 de Septiembre del 2004
La primera parte es muy facil, una vez que leas del teclado y tengas el String con el nombre y la nota, crea un objeto StringTokenizer, que te da la posibilidad de dividir una cadena en subcadenas. Ej.: si la cadena que han introducido es de la forma nombre/nota solo tienes que hacer lo siguiente:
StringTokenizer sto = new StringTokenizer(cadena);
String nombre = sto.nextToken("/"); // el parametro que le pasas es el caracter que usara como delimitador para hacer la subcadena
String nota = sto.nextToken("/");
Una vez que tienes la nota en un String puedes pasarlo a cualquier tipo de dato, Double, Float, Integer, todos aceptan un String como parametro del constructor.
Lo del porcentaje no se a que te refieres, pero una vez que tienes la nota no tienes mas que operar.
Lo de ordenarlos, no te puedo ayudar mucho, es C++, la stl, tenia implementados metodos para ordenar Vectores, Listas..., pero en java la clase Vector no tiene definido un metodo sort(), seguramente hay alguna clase definida que te permita tener ordenadas las instancias, pero no se decirte cual. Puedes implementar tu un metodo para que introduzca los objetos en el orden que prefieras, o meterlos sin mas y luego hacer un metodo para que los imprima en orden, las 2 opciones son muy faciles, pero te recomiendo que antes mires la API de java a ver si encuentras lo que necesitas, no hace falta reinventar la rueda cada vez.
Un Saludo

Lucas
03 de Septiembre del 2004
Para ordenar Vectores, listas, etc, tienes que convertirlo a un array de tipos. Para ordenar existe la clase Arrays que tiene un metodo sort(Object[]) para ordenar arrays de objetos y de tipos primitivos. En tu caso, tienes que ordenar por dos criterios por lo que necesitaras un clase Comparator que decida cual de dos objetos es mayor y pasarsela al sort() Esta clase recibira dos objetos del array, que deben ser clases tuyas que contengan el nombre y la nota. El comparator decide cual es mayor evaluando los valores de la nota y el nombre. Para ello utiliza el compareTo() de cualquier numero (Integer, Float) y de String para compararlos y devolver el resultado al sort().