Variablenfelder (1)

Manchmal benötigt man eine Reihe von Variablen mit ähnlicher Funktion:
int anzahl0, anzahl1, anzahl2, anzahl3, anzahl4, anzahl5, anzahl6;

Statt wie gezeigt reihenweise ähnliche Variablennamen zu kreieren, fordert man dann besser den Speicherplatz für ein Array an:
int[] zahl = new int[7];

Der entscheidende Vorteil eines solchen Arrays: Der Variablenname kann über Formeln errechnet werden. Hier ein Beispiel. Das Programm testet einen Würfel. Es erzeugt 10 Zufallszahlen zwischen 1 und 6 und wertet statistisch aus, wie oft jede Augenzahl fällt.


class Würfeltest {

  public static void main(String[] args) {
    System.out.println("Würfeltest");

    int versuche = 10;                                   // Anzahl der Versuche

    int[] anzahl = new int[7];

    anzahl[1]=0;                                          // Angelegt werden 6 Speicherplätze für
    anzahl[2]=0;                                          // Integerzahlen: anzahl[0], anzahl[1], ...
    anzahl[3]=0;
    anzahl[4]=0;
    anzahl[5]=0;
    anzahl[6]=0;

    // for (int n=1; n<7; n++) anzahl[n]=0;

    for (int wurf=0; wurf<versuche; wurf++) {
      int augen = (int) (Math.random()*6+1);

      if (augen==1) anzahl[1]++;                          // Bei einer 1 wird anzahl[0] erhöht, ...
      if (augen==2) anzahl[2]++;                          // bei einer 6 wird anzahl[5] erhöht.
      if (augen==3) anzahl[3]++;
      if (augen==4) anzahl[4]++;
      if (augen==5) anzahl[5]++;
      if (augen==6) anzahl[6]++;

    // anzahl[augen]++;
    }

    System.out.println("Anzahl 1: "+anzahl[1]);           // Die Statistik wird ausgegeben.
    System.out.println("Anzahl 2: "+anzahl[2]);
    System.out.println("Anzahl 3: "+anzahl[3]);
    System.out.println("Anzahl 4: "+anzahl[4]);
    System.out.println("Anzahl 5: "+anzahl[5]);
    System.out.println("Anzahl 6: "+anzahl[6]);

    // for (int n=1; n<7; n++) System.out.println("Anzahl "+n+": "+anzahl[n]);
  }
}


Unter Blöcken mit jeweils 6 fast identischer Anweisungen erkennen Sie eine auskommentierte (durch einen Kommentar unwirksam gemachte) For-Schleife. Löschen Sie jeweils den Block mit den 6 Anweisungen und aktivieren Sie die Schleife, indem Sie die Kommantarzeichen entfernen. Das Programm wird dramatisch kürzer, leistet aber genau das Gleiche wie vorher.

Aufgaben:

  1. Geben Sie die Häufigkeit der einzelnen Ereignisse nicht mehr absolut, sondern prozentual aus.
    Ändern Sie dann die Anzahl der Versuche auf 100, 1000, 10000,....
  2. Ändern Sie das Programm so ab, dass es mit zwei Würfeln würfelt und eine Statistik über die Summe der beiden Würfe erstellt und ausgibt. Die niedrigste mögliche Summe ist 2, die höchste 12. Welche Verteilung erwarten Sie?
  3. Lassen Sie den Benutzer zehn Zahlen eingeben und speichern Sie sie in einem Feld ab.
    Geben Sie die Zahlen anschließend in umgekehrter Reihenfolge wieder aus.
  4. Mithilfe von arrayName.length (im Gegensatz zur Längenmethode bei Strings ohne Methodenkammern) können Sie ermitteln, für wie viele Elemente das Array deklariert ist. Beispiel für das obige Programm: int l = statistik.length liefert die Zahl 6.
    Ihre Aufgabe: Formulieren Sie das Programm "Hallo mit Parametern (Beispiel 2) so, dass Sie es mit einer beliebigen Anzahl von Parametern starten können. Ein Programmstart mit "java Gruss innig geliebte Tante Auguste" gibt also aus "Hallo innig geliebte Tante Auguste", ein Start mit "java Gruss" erzeugt ein einfaches "Hallo".
  5. Lassen Sie sich vom Benutzer (über die Zwischenablage) einen längeren Text ohne Absatzmarke eingeben. Lesen Sie ihn über Eingabe.nextLine() ein und zählen Sie die Häufigkeit der verschiedenen Zeichen (Buchstaben, Leerzeichen, Satzzeichen)
  6. Informieren Sie sich über das Primzahlsieb des Eratosthenes und programmiere das Verfahren.