erstellt 04.06.03; überarbeitet 21.11.2015; übersetzt 24.06.03; überarbeitet 14.02.05, 03.05.2024. 29.05.24


Kapitel 40 Programmieraufgaben

Wir erzeugen eine Klasse Gewicht, die ein Array der Gewichtsmessungen einer Person enthält, aufgenommen an aufeinanderfolgenden Tagen eines Monats.

Aufgabe 1 — Konstruktor

Wir vervollständigen den Konstruktor in dem folgenden Programm, so dass er ein neues Array daten konstruiert und dann Werte über den Parameter init nach daten kopiert.

Ein Objekt der Klasse Gewicht soll über sein eigenes Arrayobjekt verfügen. Wir wollen nicht, dass ein Gewicht-Objekt bloß auf ein Array in main() verweist. Also wäre daten = init nicht korrekt. Wenn wir das tun würden, wäre das Objekt abhängig von dem was main() mit dem Array tun würde.

Dann vervollständigen wir die toString() Methode.

class Gewicht
{
  private int[] daten;

  // Konstruktor
  public Gewicht(int[] init)
  {
    // konstruiert ein Array mit der gleichen Länge
    // wie das durch init referenzierte.
    daten = new ....

    // kopiert die übergebenen Werte
    // nach daten.
    for (int j.....)
    {
      daten[j] =
    }
  }

  //Ausgabe
  public String toString()
  {


  }

}

public class GewichtTester
{
  public static void main ( String[] args )
  {
    int[] werte = { 98,  99,  98,  99, 100, 101, 102, 100, 104, 105,
                    105, 106, 105, 103, 104, 103, 105, 106, 107, 106,
                    105, 105, 104, 104, 103, 102, 102, 101, 100, 102 };
    Gewicht juni = new Gewicht( werte );
    System.out.println( juni );
    werte[0] = 999; // einen Wert im lokalen Array ändern
    System.out.println( juni );  // das sollte das gleiche ausgeben
                                 // wie das erste println
  }
}

Zurück zum Inhaltsverzeichnis.


Aufgabe 2 — Durchschnitt

Wir fügen jetzt der Klasse eine durchschnitt() Methode hinzu. Dabei verwenden wir Integer-Arithmetik.

class Gewicht
{
  . . .

  int durchschnitt()
  {
    . . .
  }

  public static void main ( String[] args )
  {
    int[] werte = { 98,  99,  98,  99, 100, 101, 102, 100, 104, 105,
                    105, 106, 105, 103, 104, 103, 105, 106, 107, 106,
                    105, 105, 104, 104, 103, 102, 102, 101, 100, 102};

    Gewicht juni     = new Gewicht( werte );
    int durchschnitt = juni.durchschnitt();
    System.out.println("Durchschnitt = " + durchschnitt );
  }
}

Um die Methode zu überprüfen, initialisieren wir das Array mit 10 Werten, die einen leicht zu berechnenden Durchschnitt ergeben.

Zurück zum Inhaltsverzeichnis.


Aufgabe 3 — Teilbereich von Tagen

Wir fügen eine weitere Methode hinzu, die den Durchschnitt für einen Teilbereich von Tagen berechnet. Die Signatur der Methode sieht so aus:

int subDurchschnitt( int start, int ende );

Wir machen den Bereich inklusive, das heißt, es werden alle Tage von start bis inklusive ende addiert.

Der erste Tag des Monats befindet sich in der Arrayzelle mit dem Index 0. Wir sollten die Ergebnisse überprüfen.

Wir verwenden diese Methode in main(), um den Durchschnitt der ersten Hälfte des Monats und dann den der zweiten Hälfte des Monats zu berechnen. Wir geben sowohl die beiden Durchschnittswerte als auch die Differenz zwischen ihnen aus. Wenn der Monat eine ungerade Zahl an Tagen hat, übernehmen wir den mittleren Tag in beide Durchschnittswerte.

Zurück zum Inhaltsverzeichnis.


Ende der Aufgaben