Aufgabe 1.
class ErwGanzWS extends GanzWS { public int durchschnitt() { int summe = 0; for (int i = 0; i < anzahl; i++) { int element = inhalt[(aeltester + i) % inhalt.length]; if (element < 0) element = - element; // element = Math.abs(element); summe += element; } return anzahl == 0 ? 0 : summe / anzahl; } }
Aufgabe 2:
1. Gleichzeitiger Zugriff auf den Puffer soll vermieden werden – durch synchronized der Puffer-Zugriffsmethoden
2. Der Verbraucher möchte entnehmen, aber der Puffer leer ist:
while (anzahl == 0) wait();
juengstes = (juengstes + 1) % inhalt.length;
4. Der Erzeuger soll nicht warten, wenn der Puffer nicht mehr voll ist
notifyAll();
Aufgabe 3:
· Verbesserungen von bubble sort (wie z.B. shaker sort) verbessern seine Komplexität nicht
· In ein ObjectOutputStream müssen alle Objekte einzeln mit writeObject übertragen werden.
Falsch: ein writeObject überträgt die ganze Objektstruktur
· Es gibt Objekte, die einem JFrame-Objekt hinzugefügt werden, und nicht sichtbar gemacht werden können.
· Von der Wurzel bis zum Blatt eines Binärbaums mit n Elementen führen im Durchschnitt n2 Schritte
Falsch log2 n
· Eine Liste rekursiv durchzulaufen braucht genauso viel Zeit und Platz wie iterativ.
Falsch: Zeit ja, aber mehr Platz (Stapel durch Rekursion)
· Es ist möglich, dass r1.equals(r2) true liefert, r1.deepEquals(r2) (die tiefe Gleichheit) aber false
Falsch: Wenn der Inhalt zweier Objekte gleich ist, dann kommt deepEquals zu den gleichen referierten Objekten
· Die Reihungsimplementierung eines Multibehälters ist immer schneller als die verkettete Liste.
Falsch: nur fast immer (Dirketzugriff in der Reihung); nicht aber, wenn die Reihung wegen Überlaufs kopiert werden muss
Aufgabe 4.
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class A4 extends JApplet { private JButton[] knoepfe = new JButton[10];
public void init() { JPanel panel = new JPanel(); getContentPane().add(panel); panel.setLayout(new FlowLayout()); for (int i = 0; i < knoepfe.length; i++) { knoepfe[i] = new JButton("" + i); knoepfe[i].setBackground(Color.blue); knoepfe[i].addActionListener(lauscher); panel.add(knoepfe[i]); } }
private int rot = 0;
private ActionListener lauscher = new ActionListener() { public void actionPerformed(ActionEvent ereignis) { knoepfe[rot].setBackground(Color.blue); knoepfe[ereignis.getActionCommand().charAt(0) - '0'].setBackground(Color.red); rot = ereignis.getActionCommand().charAt(0) - '0'; }; }; }
Aufgabe 5. Unterschied zu Frame: kein Container-Objekt (getContentPane) zwischen Frame und Button