Klassen und Objekte

Arrays nutzen

Unzulänglichkeit von Methoden *

Eine Methode zur Berechnung des Mittelwertes ist schnell implementiert. Man schreibt:

double avg( double[] array, int len )
{
  double sum = 0.0;

  for ( int i = 0; i < len; i++ )
    sum += array[ i ];

  return sum / len;
}

Leider funktioniert sie nicht immer. Warum nicht?

Der Umdreher *

Schreibe eine Klassenmethode reverse(), die ein gegebenes Feld umdreht, d. h., dass das erste Element nach der Operation hinten steht und das letzte Element steht vorne.

public static void reverse( double[] array )
{
  if ( array == null )
    return;
}

Lösung

Der Typumwandler *

Eine Liste von Strings soll in eine Liste von Ganzzahlen (int) konvertiert. werden. Diese Arbeit soll eine Klassenmethode erledigen:

public static int[] toInts( String[] array )
{
}

Aufrufen kann man die Methode etwa wie folgt:

String[] numbersAsString = { "1", "234", "333" };
int[]    numbers = toInts( numbersAsString );

Arithmetische Ausdrücke vorlesen **

Ein mathematischer Ausdruck kann aus Zahlen und Operatoren bestehen. 1 - 2 * 3 / 4 ist ein Beispiel dafür. Wenn dieser Ausdruck vorgelesen werden soll, dann wird ein Computer Folgendes sagen: "Eins minus zwei mal drei durch vier". Schreibe eine Methode readTerm(char[] term) mit Feldoperationen, die die Zeichenkette "vorliest". Um es einfach zu machen, beschränken wir uns die Zahlen auf 0..9.

Wer hat den Kleinsten? *

Gegeben ist eine Menge von java.awt.Point-Objekten in einem Feld points:

Point[] points = { new Point(10, 20), new Point(12, 2), new Point(44, 4) };

Lösung

Die Utility-Klasse Arrays

Die Klasse Arrays *

Eine nette Hilfsklasse Arrays bietet an, ein Feld zu sortieren. Teste dies an der Menge mit den Zufallszahlen. Beobachte die Signaturen der Methode sort(). Welche Typen werden unterstützt?

Baue ein Fließkomma-Feld mit zehn Elementen auf. Fülle es mit Zufallszahlen, die sich mit random() aus java.lang.Math erzeugen lassen. Gib anschließend das Feld auf dem Bildschirm aus. Sortiere das Feld.

Kann die sort()-Methode wirklich alles ohne Weiteres sortieren? Wo könnte ein Problem liegen?

Vergleichen und Ausgabe von Feldern über die Klasse java.util.Arrays

Teste jeweils die statischen Funktionen toString() und deepToString() der Klasse Arrays an folgenden Feldern:

Object[] o = { "Eins", "Zwei", "Polizei", new int[]{1, 2, 3} };
Object[] p = { "Eins", "Zwei", "Polizei", new int[]{1, 2, 3} };

Vergleiche auch die statischen Funktionen equals() und deepEquals().

Anagrammtest *

Schreibe eine Methode isAnagramm(String s1, String s2), um zu testen, ob zwei Zeichenketten Anagramme sind. In einem Anagramm kommen dieselben Zeichen möglicherweise in anderer Reihenfolge vor. Zum Beispiel stellen folgende Zeilen Anagramme dar:

Gebe jeweils die Eingabezeilen und eine der folgenden Meldungen aus: "Ja, obige Zeilen sind Anagramme" oder "Nein, obige Zeilen sind keine Anagramme." Man kann davon ausgehen, dass die Zeilen keine Groß- und Kleinbuchstaben sowie Leerzeichen enthalten.

Optional: Bei dem Vergleich der Eingabezeilen sollen Leerzeichen ignoriert und Groß- und Kleinbuchstaben als gleich betrachtet werden.

Lösung