Recorrer elementos de un hashtable
Publicado por William Alexander Brito Viñas (12 intervenciones) el 22/03/2013 20:39:40
He decidido aprender algo de Java y ejercitandome he estado detenido es esto:
Tengo el siguiente codigo que introduce un ciclo infinito y no veo el porque.
import CustomClasses.Student;
import java.util.Hashtable;
public static void main(String[] args) {
O sea la idea es simple, un hashtable con dos elementos, el problema de ciclar a traves de los elementos puedo hacerlo usando un iterator suministrado por entrySet y de hecho prefiero hacerlo así pero el codigo de arriba que cicla a traves de la enumeracion elements usando HasmoreElements y nextElement debería funcionar, pero en lugar de eso hasMoreElements() siempre devuelve Verdadero y el ciclo no termina.
La pregunta es ¿Por qué?.
Nota: La clase Student es una clase del paquete CustomClasses, cuyo constructor toma el nombre, el apellido y la calificacion. Tiene un metodo que devuelve el nombre completo y hace override del metodo toString(). Los getters y setters de todo lo que se inicializa en el contrsuctor tamiben estan definidos. Es un codigo demaisado simple para ilustrarlo aqui.
Tengo el siguiente codigo que introduce un ciclo infinito y no veo el porque.
import CustomClasses.Student;
import java.util.Hashtable;
public static void main(String[] args) {
Hashtable<String, Student> ht = new Hashtable<String, Student>();
Student[] students = new Student[2];
students[0] = new Student("William", "Brito", 70);
students[1] = new Student("Claudia", "Alvarado", 85);
for(Student s:students) {
float average = 0;
// Here enters in an endless loop
while (ht.elements().hasMoreElements()) {
average /= ht.size(); // This code is unreachable. Why?
}Student[] students = new Student[2];
students[0] = new Student("William", "Brito", 70);
students[1] = new Student("Claudia", "Alvarado", 85);
for(Student s:students) {
ht.put(s.getFullName(), s);
}float average = 0;
// Here enters in an endless loop
while (ht.elements().hasMoreElements()) {
average += ht.elements().nextElement().getScore();
}average /= ht.size(); // This code is unreachable. Why?
O sea la idea es simple, un hashtable con dos elementos, el problema de ciclar a traves de los elementos puedo hacerlo usando un iterator suministrado por entrySet y de hecho prefiero hacerlo así pero el codigo de arriba que cicla a traves de la enumeracion elements usando HasmoreElements y nextElement debería funcionar, pero en lugar de eso hasMoreElements() siempre devuelve Verdadero y el ciclo no termina.
La pregunta es ¿Por qué?.
Nota: La clase Student es una clase del paquete CustomClasses, cuyo constructor toma el nombre, el apellido y la calificacion. Tiene un metodo que devuelve el nombre completo y hace override del metodo toString(). Los getters y setters de todo lo que se inicializa en el contrsuctor tamiben estan definidos. Es un codigo demaisado simple para ilustrarlo aqui.
Valora esta pregunta


0