Hallo allerseits, ich habe folgendes Problem:
Bei einer Aufgabe wurde verlangt, sobald ein Array die Initialgrösse erreicht hat, soll es eine Exception "Überlauf" anzeigen. ->> Das hat funktioniert.
Gleichzeitig sollte das Array in einer Subklasse in ein Grösseres Array kopiert werden--> Das hat auch funktioniert.
Als ich dies in einem separaten Programm gemacht hatte, konnte ich in der Testklasse "queueTest" Werte ins Array schreiben und wenn es zu gross wurde, generierte es ein neues.
Jetzt das Problem: Ich möchte nun wieder Testen ob es in diesem Programm funktioniert, aber immer wenn ich die Arraygrösse überschreite, zeigt es logischerweise die Exception an.
Weiss jemand was ich machen kann, damit die Exception angezeigt wird, aber das Programm trotzdem nicht unterbricht?
Bei einer Aufgabe wurde verlangt, sobald ein Array die Initialgrösse erreicht hat, soll es eine Exception "Überlauf" anzeigen. ->> Das hat funktioniert.
Gleichzeitig sollte das Array in einer Subklasse in ein Grösseres Array kopiert werden--> Das hat auch funktioniert.
Als ich dies in einem separaten Programm gemacht hatte, konnte ich in der Testklasse "queueTest" Werte ins Array schreiben und wenn es zu gross wurde, generierte es ein neues.
Jetzt das Problem: Ich möchte nun wieder Testen ob es in diesem Programm funktioniert, aber immer wenn ich die Arraygrösse überschreite, zeigt es logischerweise die Exception an.
Weiss jemand was ich machen kann, damit die Exception angezeigt wird, aber das Programm trotzdem nicht unterbricht?
Java:
class ArrayQueue implements Queue {
protected Object[] OA = new Object[2];
protected int pos = 0; // nächste Einfügeposition
public ArrayQueue(int size) {// Konstruktor bei dem man zusätzlich die Array-Grösse mitgibt
super();
OA = new Object[size];//Array wird mit dieser grösse erstellt
}
public void put(Object obj) {//Daten ins Array einlesen
if (pos == OA.length) {
throw new QueueExeption("Überlauf");//Wenn das Array voll ist, Exeption auslösen (Fehlermeldung "Überlauf")
}
OA[pos] = obj; // obj in OA aufnehmen
pos++; // pos erhöhen
}
public Object get() {//Objekt aus der Queue anzeigen und herausnehmen.
if (pos == 0) {
throw new QueueExeption("Leer");
}
Object o = OA[0];
pos--; //Position wieder um 1 reduzieren
for (int i = 1; i < OA.length; i++) {
Object object = OA[i];
OA[i - 1] = object;
}
return o;
// Nachrücken der restlichen Elemente, Aktualisieren von pos
}
protected void showArraySize() {//Zeigt die Arraygrösse an
System.out.println("Arraygrösse: " + OA.length);
}
public Object peek() {
return OA[0]; // noch keine Ausnahmebehandlung
}
protected Object[] getOA() {// Hier wird das Objekt OArry weitergegeben mit protected
return OA;
}
protected void setOA(Object[] OA) {
this.OA = OA;
}
public void clear() { // noch zu implementieren
pos = 0;
for (int i = 0; i < OA.length; i++) { //Alle Stellen im Array durchgehen.
OA[i] = null; //Entsprechende Arrayposition auf 0 setzen
}
}
public boolean isEmpty() {//Wahr/Falsch-Wert zurückliefern, ob Array leer ist oder nicht.
return pos == 0;
}
}
Java:
class QueueTest {
public static void main(String[] args) {
ArrayQueue q = new ArrayQueue(2);
q.put("1hallo");
q.put("2velo");
q.clear();
q.put("3auto");
q.put("4auto");
q.put("5auto");
System.out.println(q.get());
System.out.println(q.get());
q.showArraySize();
}
}
Java:
class DynArrayQueue extends ArrayQueue {
public DynArrayQueue(int size) {
super(size);
}
@Override
public void put(Object obj) {
super.put(obj);
}
protected void push(Object obj) {//Werte in Array eingeben
if (pos == OA.length - 1) {
//Wenn beim einfügen die Größe nicht ausreicht vergrößern
Object[] newOArray = new Object[OA.length * 2]; // neue größe - hier doppelt so groß
CopyArrayItemsToNewArray(super.getOA(), newOArray);
super.setOA(newOArray);
}
OA[pos] = obj; // obj in OA aufnehmen
int i = pos++; // pos erhöhen
}
private void CopyArrayItemsToNewArray(Object[] oldObjectArray, Object[] newObjectArray) {
for (int i = 0; i < oldObjectArray.length; i++) {
newObjectArray[i] = oldObjectArray[i];
}
}
}
Java:
class QueueExeption extends RuntimeException {
public QueueExeption(String string) {
super(string);
}
}
Code:
Exception in thread "main" QueueExeption: Überlauf
at ArrayQueue.put(ArrayQueue.java:15)
at queueTest.main(queueTest.java:12)
Zuletzt bearbeitet von einem Moderator: