Hi...ich versuch grad ne Queue zu programmieren, und will nun beim adden von elementen vorher überprüfen, dass auch nur elemente dazugefügt werden können, die vom gleichen Typ sind wie die, die schon drin sind.
Folgender Code wirft mir nun aber schon beim ersten element dass ich überhaupt einfügen will ne Exception:
Exception siehe ::::::: Markierung
Aber eigentlich müsste das doch so stimmen? Hab diesen part bei ner linkedList schonma genau so verwendet...
Btw mit z.b. Strings scheints zu gehn; Ich benutze aber als Elemente eine Klasse Auftrag...Einfach nur ne Klasse mit Attributen Auftragsnummer und Auftragsersteller, nix grossartiges.
..Naja, jedenfalls, wer kann mir sagen was ich falsch mach? Danke ^^
Mfg, snow
Folgender Code wirft mir nun aber schon beim ersten element dass ich überhaupt einfügen will ne Exception:
Java:
import java.util.*;
/**
* Write a description of class Queue here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Queue {
//private static final int MAXSIZE = 3;
private Object[] elements;
private int maxSize;
private int leseIndex;
private int schreibIndex;
Queue(int maxAnzahlEintraege){
maxSize = maxAnzahlEintraege+1;
elements = new Object[maxSize];
leseIndex = schreibIndex = 0;
}
public boolean leer() {
// Die Queue ist leer, wenn Lese- und Schreibindex auf dieselbe Position zeigen.
return schreibIndex==leseIndex;
}
public boolean voll() {
// Die Queue ist voll, wenn nach einer Schreiboperation der Schreibindex auf dieselbe Position
// wie der Leseindex verweisen würde.
return (schreibIndex+1)%maxSize==leseIndex;
}
public boolean add(Object o) throws Exception { // Hinzufügen eines neuen Eintrags an das Queue-Ende
// ::::::::::::: folgende zwei zeilen machen die Probleme::::::::::::::::::::::::
if (!(o instanceof Comparable))
throw new Exception(o.toString() + " ist nicht vom gleichen Typ");
if (voll())
return false;
elements[schreibIndex] = o;
schreibIndex = (schreibIndex+1)%maxSize;
System.out.println(toString());
return true;
}
public Object remove() { // Entfernen der Eintrags von der Queue-Spitze
if (leer())
return null;
Object erg = elements[leseIndex];
leseIndex = (leseIndex+1)%maxSize;
System.out.println(toString());
return erg;
}
public String toString() { // Hilfsmethode zur Ausgabe des Queueinhalts
String erg = "Queue: ";
int i = leseIndex;
while(i!=schreibIndex) {
erg += "-> [" + elements[i] + "] ";
i = (i+1)%maxSize;
}
return erg;
}
}
Exception siehe ::::::: Markierung
Aber eigentlich müsste das doch so stimmen? Hab diesen part bei ner linkedList schonma genau so verwendet...
Btw mit z.b. Strings scheints zu gehn; Ich benutze aber als Elemente eine Klasse Auftrag...Einfach nur ne Klasse mit Attributen Auftragsnummer und Auftragsersteller, nix grossartiges.
..Naja, jedenfalls, wer kann mir sagen was ich falsch mach? Danke ^^
Mfg, snow
Zuletzt bearbeitet: