Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich bin neu auf der Seite [schild=1 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]java-forum.org[/schild] und hoffe, dass ihr mir bei meinem kleinen Problem helfen könnt.
Ich habe ein Programm geschrieben, dass eine typische Wartschlange nach dem FIFO-Prinzip implementiert. Dazu hier erst mal der Quelltext.
Code:
public class Queue {
public static final int CAPACITY = 1000;
private int capacity;
private int[] Q;
private int f = 0;
private int s = 0;
public Queue () {
this(CAPACITY);
}
public Queue (int cap) {
capacity = cap;
Q = new int[capacity];
}
public int size () {
return s;
}
public boolean isEmpty () {
return (s == 0);
}
public void enqueue (int element) throws QueueException {
int r;
if (s >= capacity) {
throw new QueueException("k.A.");
} else {
r = (f + s) % capacity;
Q[r] = element;
s++;
}
}
public int front () throws QueueException {
if (s <= 0) {
throw new QueueException("k.A.");
} else {
return Q[f];
}
}
public int dequeue () throws QueueException {
int element;
if (s <= 0) {
throw new QueueException("k.A.");
} else {
element = Q[f];
f = (f + 1) % capacity;
s--;
return element;
}
}
}
So nun wollte ich aber die Queue nicht mit einer Exception abbrechen lassen, sondern falls die Queue voll ist, sie in ein neues und größeres Array kopieren. Doch ich komme da irgendwie nicht wirklich weiter.
Außerdem wollte ich mal fragen, ob es möglich wäre verschiede Objekte in der Queue abzulegen, also nicht nur Int sonder auch String oder änhnliche Werte.
Könnt ihr mir da vielleicht weiterhelfen? Wäre echt super.
Och dachte nur, weil ihr fast den identischen Code, und fast die identische Frage hattet...
Joa, das mit dem Kopieren kannst du so übernehmen.
Wegen den Objekten: du kannst einen Object-Array verwenden, dann müssen aber int's in ihren Wrapper "Integer" verpackt werden. Allenfalls schaust du dir auch an wie Generics funktionieren. Ein Array mit Generics kann man zwar nicht erstellen, aber du kannst eine Methode bieten welche gerade den richtigen Typ Objekte zurückgibt (halt mit einem kleinen Cast von Object zu <irgendwas> dazwischen).
Ja, die gibts nicht vorgefertigt. Ist aber nicht weiter kompliziert zu schreiben, einfach eine Klasse "QueueException" schreiben, die von "Exception" (oder auch "RuntimeException") erbt.