Siehe unten
Die vollständigen Methoden scannen die Arrays, dabei zählen und fügen sie nur die gültigen Tage hinzu.
Einen Error Flag in berechneDurchschnitt() zurückzugeben ist etwas umständlich. Besser wäre es Fehler mit Exceptions zu handhaben. Das wird in späteren Kapiteln besprochen.
import java.util.*;
class Monat
{
  // Konstante
  final int ERRORFLAG = 999;
  // Instanzvariablen
  private int   monat;  // 1 == Januar
  private int   jahr;   // Jahr als int, z.B. 2017
  private int   tageImMonat;   // Anzahl der Tage in diesem Monat
  // Temperatur Daten
  private int[] temp;    //Temperatur Tag 1 in temp[1]
  private boolean[] valide;
  . . .
  // die Anzahl der Tage mit gueltigen Daten zaehlen
  public int anzahlValideTage()
  {
    int anzahl = 0;
    for ( int tag = 1; tag <= tageImMonat; tag++ )
      if ( valide[tag] )
        anzahl++;
    return anzahl;
  }
  // Durchschnittstemperatur fuer alle gueltigen Tage berechnen
  public double berechneDurchschnitt()
  {
    int summe = 0;
    int anzahl = 0;
    for ( int tag=1; tag <= tageimMonat; tag++ )
    {
      if ( valide[tag] )
      {
        summe += temp[tag];
        anzahl++;
      }
    }
    if ( anzahl > 0 )
      return (double)summe/anzahl;
    else
      return ERRORFLAG;
  }
}
Was passiert mit einem Monat-Objekt, wenn das Programm beendet ist?