ArrayQueue mit Exceptions und Vererbung

abcman

Mitglied
Hallo allerseits,
seit einiger Zeit bastle ich an einer Aufgabe herum. Ich dachte bereits, das alles funktioniert, aber nun habe ich den Code wahrscheinlich doch vermurkst, sprich ich finde den Fehler nicht.
Das füllen, leeren und Inhaltabfragen der Queue funktioniert einwandfrei.

Aber wenn die Queue voll ist (Arrayinitialgrösse überschritten), müsste in einer Subklasse ein zweites Array angelegt und die Inhalte hinein kopiert werden. Ich habe auch bereits probiert die Exception auszuklammern, ohne Erfolg.


Kann mir jemand weiterhelfen?


Java:
public 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:
public class DynArrayQueue extends ArrayQueue {
 public DynArrayQueue(int size) {
  super(size);  
 }
 /*@Override
 public void put(Object obj) {
  // TODO Auto-generated method stub
  super.put(obj);
 }
*/ 
 
  public void put(Object obj){//Werte in Array eingeben      
   super.put(obj);
   System.out.println("Subklasse_TEST");
         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];
        }
    } 
}
/*
protected void push(Object obj){//Werte in Array eingeben
    if (pos == OArry.length -1){
//Wenn beim einfügen die Größe nicht ausreicht vergrößern
        Object [] newOArray = new Object[OArry.length * 2];           // neue größe - hier doppelt so groß              
        CopyArrayItemsToNewArray(super.getOArry(), newOArray);
        super.setOArray(newOArray);
   }
    OArry[pos] = obj; // obj in OA aufnehmen
    int i = pos++; // pos erhöhen
}*/

Java:
public class queueTest {
 public static void main(String[] args) {
  ArrayQueue q = new ArrayQueue(3);
 q.put("1hallo");
 q.put("2velo");
 q.clear();
 q.put("3auto");
 q.put("4auto"); 
 q.put("5auto"); 
 q.put("6auto"); 
 
 System.out.println(q.get());
 System.out.println(q.get());
 q.showArraySize();

 }
}

Java:
public class QueueExeption extends RuntimeException {
 public QueueExeption(String string) {
  super(string);
 }
}


Java:
public interface Queue {
 public void put(Object o);
 
 public Object get();
 
 public void clear();
 public boolean isEmpty();
}
 

Flown

Administrator
Mitarbeiter
Geschweige davon, dass man einiges anders/besser machen kann rufst du nur in deiner Kindsklasse super.put(obj); falsch auf:

Diese sollte so aussehen:
Java:
@Override
public void put(Object obj) {// Werte in Array eingeben
  if (pos == OA.length) {
    Object[] newOArray = new Object[OA.length * 2]; // neue größe - hier
    CopyArrayItemsToNewArray(super.getOA(), newOArray);
    super.setOA(newOArray);
  }
  super.put(obj);
}
 

abcman

Mitglied
Danke Flown für deine schnelle Antwort.
Ich habe die Kindsklasse nun angepasst. Aber es gibt immer noch den gleichen Fehler.




Java:
public class DynArrayQueue extends ArrayQueue {


    public DynArrayQueue(int size) {
        super(size);
        
    }


    /*@Override
    public void put(Object obj) {
        // TODO Auto-generated method stub
        super.put(obj);
    }
*/    
    
    /* public void put(Object obj){//Werte in Array eingeben
         
         
        super.put(obj);
         System.out.println("Subklasse_TEST");
         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
  
     }
     */
    
    
         
         @Override
         public void put(Object obj) {// Werte in Array eingeben
           if (pos == OA.length) {
             Object[] newOArray = new Object[OA.length * 2]; // neue größe - hier
             CopyArrayItemsToNewArray(super.getOA(), newOArray);
             super.setOA(newOArray);
           }
           super.put(obj);
         }
    
    
    private void CopyArrayItemsToNewArray(Object [] oldObjectArray, Object [] newObjectArray) {
        for (int i = 0; i < oldObjectArray.length; i++) {
            newObjectArray[i] = oldObjectArray[i];
        }
    }
    
    
    
}



Java:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at ArrayQueue.put(ArrayQueue.java:16)
    at queueTest.main(queueTest.java:13)
ArrayQueue: 16 => Superklasse put methode (siehe unten)
queueTest.java:13 => in der Test-Klasse wo man das Array zum überlaufen bringt




Muss ich in der Superklasse bei der If-Bedingung noch etwas anpassen?

Java:
      public void put(Object obj) {//Daten ins Array einlesen        
        if (pos==OA.length) //;//Wenn das Array voll ist, Exeption auslösen (Fehlermeldung "Überlauf")
        OA[pos] = obj; // obj in OA aufnehmen
        pos++; // pos erhöhen
        //throw new QueueExeption("Überlauf"); Exception ausgeklammert 
    }
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Naja du solltest auch die Implementierung für die dynamisch große Queue auch nehmen.
In deiner main-Methode:
Java:
ArrayQueue q = new DynArrayQueue(3);
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D ArrayQueue - enqueue Methode Java Basics - Anfänger-Themen 2
M ArrayQueue need HELP! Java Basics - Anfänger-Themen 5
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
berserkerdq2 Habe zwei exceptions, welche ist ein Kommunikationsfehler und welche ein Ausgabefehler? Java Basics - Anfänger-Themen 4
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
C Exceptions identifizieren Java Basics - Anfänger-Themen 5
A Exceptions mit objektreferenzen Java Basics - Anfänger-Themen 4
A Exceptions und methods Java Basics - Anfänger-Themen 2
A Cannot find symbol bei exceptions Java Basics - Anfänger-Themen 2
A Exceptions und Packages Java Basics - Anfänger-Themen 6
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
X Exceptions Benutzereingaben Java Basics - Anfänger-Themen 4
F Exceptions in Interfaces Java Basics - Anfänger-Themen 4
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
L Exceptions und Konten Java Basics - Anfänger-Themen 21
D Frage zu Exceptions Java Basics - Anfänger-Themen 8
I Wie programmiert man Exceptions? Java Basics - Anfänger-Themen 4
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
C Erste Schritte Exceptions nicht verstanden Java Basics - Anfänger-Themen 2
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
T Exceptions - ausgeführte Zeilen Java Basics - Anfänger-Themen 4
J Exceptions Java Basics - Anfänger-Themen 69
C Exceptions Java Basics - Anfänger-Themen 8
C Exceptions Java Basics - Anfänger-Themen 6
F Exceptions Java Basics - Anfänger-Themen 6
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
M "Exceptions abfragen" Java Basics - Anfänger-Themen 6
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
Z Catch & Exceptions Java Basics - Anfänger-Themen 4
N Compiler-Fehler Drei Exceptions in GUIHack für Dreiecke auf MoveButtons Java Basics - Anfänger-Themen 36
V Welche Exceptions müssen importiert werden? Java Basics - Anfänger-Themen 3
S Exceptions Java Basics - Anfänger-Themen 7
M Vererbung Problem Vererbung/Exceptions Java Basics - Anfänger-Themen 9
S Verschachtelte Exceptions - Übersicht verbessern Java Basics - Anfänger-Themen 2
J Eclipse Exceptions Java Basics - Anfänger-Themen 2
K Schleifen und Exceptions Java Basics - Anfänger-Themen 8
K Exceptions auslagern Java Basics - Anfänger-Themen 15
R NullPointer Exceptions Java Basics - Anfänger-Themen 3
F Erste Schritte Übung zu Exceptions Java Basics - Anfänger-Themen 24
R Exceptions (try/catch) Java Basics - Anfänger-Themen 63
H Int Exceptions Java Basics - Anfänger-Themen 12
M Exceptions per throws oder try Java Basics - Anfänger-Themen 4
M Compiler-Fehler Queue als ArrayList mit Exceptions Java Basics - Anfänger-Themen 3
T Exceptions in einer Klasse Java Basics - Anfänger-Themen 3
B Eigene Exceptions entwerfen Java Basics - Anfänger-Themen 3
H Methoden Überflüssige Exceptions Java Basics - Anfänger-Themen 20
C Exceptions Java Basics - Anfänger-Themen 14
1 While Schleife Exceptions Java Basics - Anfänger-Themen 6
I Erste Schritte Eigene Fehlermeldungen bei Exceptions Java Basics - Anfänger-Themen 19
D Frage zu Exceptions Java Basics - Anfänger-Themen 12
M Compiler-Fehler Exceptions lieber throwen oder direkt catchen? Java Basics - Anfänger-Themen 8
T Exceptions Java Basics - Anfänger-Themen 19
B Wie finde ich Exceptions? Java Basics - Anfänger-Themen 19
Dit_ Input/Output Alle Exceptions protokollieren Java Basics - Anfänger-Themen 9
T Exceptions Java Basics - Anfänger-Themen 12
J Standard Exceptions abfangen Java Basics - Anfänger-Themen 5
F Exceptions werfen oder catchen?? Java Basics - Anfänger-Themen 14
D Exceptions - Ausnahmebehandlung Java Basics - Anfänger-Themen 19
D Frage zu Exceptions und der import Anweisung Java Basics - Anfänger-Themen 12
J Paar Fragen zu Exceptions Java Basics - Anfänger-Themen 16
G Verständnisproblem: Exceptions Java Basics - Anfänger-Themen 17
S Exceptions bei push/pop in Stack Java Basics - Anfänger-Themen 8
C Exceptions beim Beenden Java Basics - Anfänger-Themen 2
C TimerTask und Exceptions Java Basics - Anfänger-Themen 5
E Klasse öffnen, mehrere Exceptions Java Basics - Anfänger-Themen 9
C Exceptions Java Basics - Anfänger-Themen 7
G 2 Exceptions in einer Methode Java Basics - Anfänger-Themen 3
firefexx Exceptions werfen Java Basics - Anfänger-Themen 5
0 Exceptions mehrfach fangbar? Java Basics - Anfänger-Themen 4
O Exceptions Java Basics - Anfänger-Themen 3
K Sinn eigener Exceptions Java Basics - Anfänger-Themen 11
H Diverse Exceptions - Troubleshooting Java Basics - Anfänger-Themen 3
J exceptions Java Basics - Anfänger-Themen 8
sc0p InterruptedExceptions und Exceptions - in Einem! Java Basics - Anfänger-Themen 5
M Frage zu Exceptions Java Basics - Anfänger-Themen 19
M Fragen zu Exceptions Java Basics - Anfänger-Themen 3
A Exception Verständnisfrage: Exceptions während, einer Statischenzuweisung abfangen Java Basics - Anfänger-Themen 10
D Exceptions werfen + beenden Java Basics - Anfänger-Themen 12
M Exceptions aus interface-Methoden Java Basics - Anfänger-Themen 2
S File.renameTo und Exceptions / Fehlermeldung Java Basics - Anfänger-Themen 2
B Exceptions in Liste sammeln? Java Basics - Anfänger-Themen 5
O Eigene Exceptions Java Basics - Anfänger-Themen 11
O "restliche" Exceptions fangen Java Basics - Anfänger-Themen 8
H [Stil] Exceptions in der Klasse behandeln oder throwen? Java Basics - Anfänger-Themen 62
T Problem beim Werfen und Fangen von Exceptions Java Basics - Anfänger-Themen 2
V Aktivitätsdiagramm / Exceptions Java Basics - Anfänger-Themen 5
V Exceptions Java Basics - Anfänger-Themen 6
K Frage zu Exceptions -> Logging Java Basics - Anfänger-Themen 6
M Eigene Fehlermeldung bei Exceptions? Java Basics - Anfänger-Themen 12
R JDom Exceptions Java Basics - Anfänger-Themen 4
R Datei einlesen mit Exceptions Java Basics - Anfänger-Themen 2
Daniel_L Verwendung von try und catch bei exceptions Java Basics - Anfänger-Themen 7
C Reflection Exceptions behandeln Java Basics - Anfänger-Themen 6
G Exceptions - spiegeln wir da nicht einen Spiegel im Spiegel? Java Basics - Anfänger-Themen 10
G Verschiedene Exceptions zu gleichem Block Java Basics - Anfänger-Themen 6
U Frage zu Exceptions Java Basics - Anfänger-Themen 5
mwildam Philosophiefrage zu Exceptions und Rückgabewerten Java Basics - Anfänger-Themen 6
D Static, final Objekte mit Exceptions im Konstruktor Java Basics - Anfänger-Themen 2
G Exceptions Java Basics - Anfänger-Themen 4
G ServerSocket: Exceptions und Timeout Probleme Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben