# Queue ausgeben



## Hofi (17. Okt 2009)

Hallo Leute,
ich hab da ein kleines Problem. Als Aufgabe sollen wir in Java ein Wartezimmer simulieren bzw programmieren. Ich hab mir die zwei anderen Topics bereits angesehen, allerdings bringen die mich leider nicht weiter.
Mein Problem sieht folgendermaßen aus: Ich habe meiner Meinung nach das Wartezimmer soweit fertig. Allerdings wenn ich die Methode "nextPersonPlease()" aufrufe, schreibt er bei der Ausgabe leider nicht den Namen der Person hin, sondern folgendes:

*"at.fhjoanneum.ima.prog2.Person@42e816 is the next one."*

Jetzt lautet meine Frage, wie ich das verhindern kann und das Programm dazu bringen kann mir den richtigen Namen der Person auszugeben.

Ich hoff ihr könnt mir da weiterhelfen. Lg Hofi

Hier rufe ich alles auf:

```
package at.fhjoanneum.ima.prog2;

public class Wartezimmer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WaitingRoom wr=new WaitingRoom(2);
		Person werner=new Person("Werner", "Soboth", "2312");
		Person susanne=new Person("Susanne","Baier", "3423");
		Person maria=new Person("maria","Baier", "3423");
		
		wr.enter(werner);
		wr.getNumberOfPersonsInRoom();
		wr.enter(susanne);
		wr.getNumberOfPersonsInRoom();
		wr.enter(maria);
		wr.getNumberOfPersonsInRoom();
		wr.nextPersonPlease();
		wr.getNumberOfPersonsInRoom();
		wr.nextPersonPlease();
		wr.getNumberOfPersonsInRoom();
		wr.nextPersonPlease();
	}

}
```

Das ist die Klasse WaitingRoom:


```
package at.fhjoanneum.ima.prog2;

import java.util.LinkedList;
import java.util.Queue;

public class WaitingRoom {

	private int capacity;
	public Queue<Person> wartezimmer;
	
	public WaitingRoom(int capacity) {
		this.wartezimmer = new LinkedList<Person>();
		this.capacity = capacity;
	}

	public boolean isFull() {
		if (wartezimmer.size() == capacity) {
			return true;
		} else {
			return false;
		}
	}

	public boolean isEmpty() {
		if (wartezimmer.size() == 0) {
			return true;
		} else {
			return false;
		}
	}

	public int getCapacity() {
		return this.capacity;
	}

	public int getNumberOfPersonsInRoom() {
		System.out.println(wartezimmer.size());
		return wartezimmer.size();
	}

	public void enter(Person person) {
		if (isFull() == true) {
			System.out.println("There's no empty chair in the waiting room!");
		} else {
			wartezimmer.add(person);
		}
	}

	public Person nextPersonPlease() {

		if (isEmpty() == false) {
			System.out.println(wartezimmer.element() + " is the next one.");

		} else {
			System.out.println("There's nobody!");
		}
		return wartezimmer.poll();
	}

}
```

Und schließlich meine Klasse Person, wobei diese zumindest richtig sein sollte 

```
package at.fhjoanneum.ima.prog2;

public class Person {

	private String socialSecurityNumber;
	private String firstname;
	private String lastname;
	
	public Person(String socialSecurityNumber)
	{
		this.socialSecurityNumber = socialSecurityNumber;
	}
	
	public Person(String firstname, String lastname, String socialSecurityNumber)
	{
		this.firstname = firstname;
		this.lastname = lastname;
		this.socialSecurityNumber = socialSecurityNumber;
	}
	
	public String getFirstname() {
		return firstname;
	}
	
	public String getLastname() {
		return lastname;
	}
	
	public String getSocialSecurityNumber() {
		return socialSecurityNumber;
	}
	
	public void setFirstName(String firstname) {
		this.firstname = firstname;
	}
	
	public void setLastName (String lastname) {
		this.lastname = lastname;
	}

}
```


----------



## eRaaaa (17. Okt 2009)

du musst die toString- methode (die jedes objekt von object automatisch erbt) in deiner personenklasse überschreiben

```
@Override
	public String toString() {
		
		return this.fistname+" "+this.lastname;  // je nachdem, was du unter "richtigen Namen der Person" verstehst :) (kannst da natürlich auch noch die socialSecurityNumber mit ausgeben wenn du magst
	}
```


----------



## HoaX (17. Okt 2009)

Oder eben nicht die Person ausgeben, sondern den Namen der Person ...


----------



## Unregistriert (17. Okt 2009)

Danke vielmals für eure schnelle Antwort. Wie ihr vl mitbekommen habt, bin ich nocht etwas ungeübt im Programmieren mit Java  und deswegen wäre ich wahrscheinlich noch länger nicht auf diese Lösung gekommen. Nochmals Danke.


----------



## eRaaaa (17. Okt 2009)

klar, ginge auch (vor allem weil in die queue eh nur personen reinkönnen ;D )

was ich mich aber gerade frage ist, du benutzt intern java.util.Queue<Person> mit der implementierung durch linkedlist

a) dürft ihr das? 
b) wenn ja, dann musst du ja die ganzen sachen wie, isEmpty, getCapacity()(size()) nicht einbauen, die gibts ja bereits schon.

???:L


----------



## Unregistriert (17. Okt 2009)

Wir sollen die sogar einbauen. Allerdings ist mir deren Gebrauch noch nicht ganz so geläufig. Es ist quasi auch Teil der Aufgabe herauszufinden, wie sowas funktioniert


----------

