Derivado Classe StringTokenizer

killerbruf

Buenas , antes que nada pongo en situación: Estoy programando una practica de java de la universidad , que trata de un avión y pasajeros que tienen que entrar en el , una practica bastante simple. La clase "Passengers" tiene un array de "Passenger" (Pasajeros simples) los cuales despues meto en la clase "Plane". Bueno aqui viene mi duda , la classe "Passengers" tiene dos metodos que uno es para indicar si existen mas pasajeros y el otro para devolver el siguiente pasajero de nuestro array , como suggerencia el professor nos ha dicho que miremos la classe StringTokenizer que nos puede servir pero no le consigo encontrar co-relación , nose si me explicado bien , pero gracias de antemano si alguien se lo mira!

pD: No os fijéis demasiado en el constructor porque es cosa de la practica y no tiene correlación en los 2 métodos que no se implementar.

public class Passengers{

private Passenger listOfPassengers[]; /* List of Passengers */

/**
 * Class constructor creates an array of n , assign a seat each, 
 * then scrambling and finally do losing the boarding card of first passanger 
 * @param numberOfPassengers
 */
public Passengers (int numberOfPassengers){
    listOfPassengers = new Passenger[numberOfPassengers];
    for(int x=1;x<numberOfPassengers;x++) listOfPassengers[x]=new Passenger(x);
    listOfPassengers[0].loseBoardingTicket();
}

/**
 * Returns a boolean variable indicating whether there are more passengers
 * @return true if there are more passengers, false if no more
 */
public boolean hasMorePassengers(){

}

/**
 * Return the next passenger
 * @return
 */
public Passenger nextPassenger(){

}
}
Atoll

Yo tampoco veo lo del tokenizer. Para lo del next, en vez de implementarlo otra vez más te valía hacer que la clase Passengers extienda un ArrayList o cualquier otro tipo que implemente Iterable.

1 respuesta
killerbruf

#2 Lo mismo que pensaba yo , no veo por donde quiere pillarlo , tendre que rallarle haber si suelta algo porque la ultima practica ya la tube que reacer de 0 2 veces porque no utilizaba lo que el queria... Muchas gracias! Haber si alguno mas lo ve y se le ocurre algo.

1 respuesta
Atoll

#3 a ver, le he dao una vuelta más, te cuento:

primero algo de lo que no me di cuenta ayer, cuando defines listOfPassengers lo haces poniendo [] al final del nombre de la variable, eso funciona pero se considera bad form, hay que ponerlos detrás del tipo.

Java Doc

Y luego, he estado mirando la doc de stringtokenizer y como me figuraba, es un método antiguo que no se recomienda utilizar ya y que actúa como el split nativo de String.

La manera que tienes de hacer lo que te piden es la siguiente:

Defines un string tokenizer como variable local del objeto, y como String le pasas el array convertido en string con cada número separado por un espacio)

		String cadeneta = "";
		for(int passenger : listOfPassengers) {
			cadeneta += passenger;
			cadeneta += " ";
		}

Y en tus métodos hasNext y next utilizas los de StringTokenizer, hasMoreTokens y nextToken, parseando a Integer antes de hacer el return (Integer.parseInt(String s)).

Pero vamos, que en general es una gitanada máxima hacer todo esto, de qué universidad es esto? A tu profesor había que darle una medalla...

PD: Descuida que yo estudié en Valladolid y son iguales o peores xD

1 respuesta
killerbruf

#4 Primero de todo gracias , te adjunto la respuesta que he recibido cuando le planteado si podria utilizar un iterator o una arraylist : "Pista: un objeto puede guardar internamente toda la información que necesite. Por eso, además del array de Passenger, la clase puede guardar más cosas que le permitan implementar los métodos."

pD: Universidad de Lerida

pD2: Lo e probado y me funciona creo , muchissimas gracias!

Atoll

Qué grande la pista xD En fin, te enseña a hacer las cosas mal y encima utilizando una clase antigua que ha sido sustituida por un método nativo de String, que a su vez implementa Enumeration que también es antigua y se recomienda utilizar Iterator.

Así va España xD

Me alegro de que funcione, de nada :)

1

Usuarios habituales

  • Atoll
  • killerbruf