Wartezimmer

Status
Nicht offen für weitere Antworten.

JavaKüken

Mitglied
Hallo.

Ich hätte da nochmal ne Frage bzgl. meines Programms.

Ich habe nun die Class Person erstellt, die wie folgt aussieht:

Code:
public class Person {
	private String firstname;
	private String lastname;
	private String socialSecurityNumber;
	
	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 void getFirstname() {
		System.out.println(firstname);
	}
	
	public void getLastname() {
		System.out.println(lastname);
	}
	
	public void getSocialSecurityNumber() {
		System.out.println(socialSecurityNumber);
	}
	
	public void setFirstName(String firstname) {
		this.firstname = firstname;
	}
	
	public void setLastName (String lastname) {
		this.lastname = lastname;
	}
}


Weiteres hab ich eine Class WaitingRoom, die so aussieht:

Code:
import java.util.Queue;
import java.util.LinkedList;

public class WaitingRoom {

	public Queue<Person> queue;

	private final int capacity;

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

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

	}

	public boolean isEmpty() {
		if (queue.size() != capacity) {
			return true;
		} else {
			return false;
		}
	}

	public int getCapacity() {
		return this.capacity;
	}
	
	
	public void enter(Person person) {
		if (queue.size() == capacity) {
			System.out.println("The waitingroom is temporarely overcrowded!");
		} else {
			queue.add(person);
		}
	}
}

Ich muss nun noch folgenden Fall beachten:

Der Warteraum ist leer, aber der Doktor ruft "Der nächste bitte"

Wie sichert man dies?

Ich benötige auch noch die Methoden:

-public int getNumberofPersons()
-public Person nextPerson()

Wie wird das im besten Fall implementiert? Bitte um schnelle Hilfe.

Vielen Dank schon mal.

Ganz liebe Grüße
 

Schandro

Top Contributor
Code:
   public boolean isEmpty() {
      if (queue.size() != capacity) {
          true;
      } else {
         return false;
      }
   }

wenn z.b. 7 von 10 Leuten im Zimmer sind, isses leer :roll: :applaus:

du kannst dir übrigens die if-Abfrage sparen. Statt dem da oben könntest du genausogut:
return queue.size() != capacity;
schreiben, da der "!=" Operator ein boolean zurückgibt
 

JavaKüken

Mitglied
ja tut mir leid schandro, ich lerne noch... oki danke :) da war ich eh mal auf der richtigen spur mit meinem zweiten post :)
 

Der Müde Joe

Top Contributor
JavaKüken hat gesagt.:
Code:
 public boolean isEmpty() {
    return (queue.size() <= 0);
 }

besser (und funktioniert) , aber in die API gucken:
Code:
public boolean isEmpty() { return queue.isEmpty(); }

(Wobei diese Methode intern wahrscheinlich auch nur (size() == 0) macht)
 

Der Müde Joe

Top Contributor
JavaKüken hat gesagt.:
mit welcher methode ruft ich den die nächste person auf? ich werd irgendwie net clever aus der api *heul*

The remove() and poll() methods remove and return the head of the queue.

Siehe oben:
http://java.sun.com/javase/6/docs/api/java/util/Queue.html#poll()

EDIT:
Im Genensatz dazu:
The element() and peek() methods return, but do not remove, the head of the queue.
 

ARadauer

Top Contributor
JavaKüken hat gesagt.:
ja tut mir leid schandro, ich lerne noch... oki danke :) da war ich eh mal auf der richtigen spur mit meinem zweiten post :)
oft sieht man vor lauter unbekannten befehlen, das problem nicht mehr, da hilft es manchmal das problem mit papier und bleistift zu lösen, einfach mal die werte der variablen aufschreiben....
 

JavaKüken

Mitglied
so in etwa? ich steh da ehrlich gesagt total an :-(

und dann soll noch einer sagen: java is simple

Code:
public Person nextPersonPlease() {
		queue.poll();
	if (queue.size())
			
		}
 

Tobias

Top Contributor
Nein, nicht ganz:

Code:
public Person nextPersonPlease() {
      return queue.poll();
}

Edit: Das gibt dann halt einfach null zurück, wenn das WaitingRoom leer ist. Die Ausgabe von Meldungen sollte eigentlich wer anders machen. So richtig gut kann man das auch nicht analog zu deiner enter()-Methode machen, weil du immer auf null testen musst ...
 

JavaKüken

Mitglied
ist denn die methode so ok?

Code:
public int getNumberOfPersonsInRoom() {
		return queue.size();
 

JavaKüken

Mitglied
da is jetzt aber noch was... immer wenn der doktor den nächsten aufruft, muss eine person das wartezimmer verlassen... dann einfach

Code:
public Person nextPersonPlease() {
		return queue.poll()-1;
 

Der Müde Joe

Top Contributor
Das dürfte wohl nicht kompilieren.

Die API hilft:
poll:
Retrieves and removes the head of this queue, or returns null if this queue is empty.

Der Kopf der Queue wird zurückgegeben und von der Queue entfernt.

Entfernt bedeutet, nach dem Ausführen von poll ist size um eins kleiner oder 0, wenn kein Element vorhanden
 
Status
Nicht offen für weitere Antworten.

Oben