Siehe unten.
Hier ist eine ausführbare Version von Month
zusammen mit einer Testklasse.
Wir kompilieren den Code und führen ihn aus.
Dann experimentieren wir damit, bevor wir weitermachen.
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; // Konstruktor public Monat( int monat, int jahr) { this.monat = monat; this.jahr = jahr; temp = new int[ 32 ] ; valide = new boolean[ 32 ] ; switch (monat) { case 1, 3, 5, 7, 8, 10, 12 -> tageImMonat = 31; case 4, 6, 9, 11 -> tageImMonat = 30; case 2 -> { if (istSchaltjahr(jahr)) { tageImMonat = 29; } else { tageImMonat = 28; } } default -> tageImMonat = 0; } } public boolean istSchaltjahr( int jahr ) { return ((jahr % 4 == 0) && (jahr % 100 != 0)) || (jahr % 400 == 0); } // Getters und Setters public int getTemp( int tag ) { if ( tag > 0 && tag <= tageImMonat && valide[tag] ) return temp[ tag ]; else return 999; // "Magische" Zahl, wird in Kürze verbessert } public boolean setTemp( int tag, int grad ) { if ( tag > 0 && tag <= tageImMonat ) { temp[tag] = grad; valide[tag] = true; return true; } else return false; } public String toString() { String str = monat + "." + jahr + " \n"; for ( int tag = 1; tag <= tageImMonat; tag++ ) { str += tag + ": "; if ( valide[tag] ) str += temp[tag] + "; "; else str += "keine Daten; "; str += "\n"; } return str; } } public class MonatsTester { public static void main( String[] args) { Scanner scan = new Scanner( System.in ); Monat jan = new Monat( 1, 2024 ) ; String zeile = "J"; // Monat mit Temperaturen fuellen while ( zeile.toUpperCase().charAt(0) == 'J' ) { System.out.print("Tag? "); int tag = scan.nextInt(); System.out.print("Temperatur? "); int grad = scan.nextInt(); if ( !jan.setTemp(tag, grad ) ) System.out.println("Fehler im Input "); System.out.print("Fortfahren (J/N)? "); zeile = scan.next(); } System.out.println( jan ); } }
Die Getter-Methode wurden noch nicht getestet. Es wäre gut in der main()
Tests dafür hinzufügen.
Welche Werte sollten aufsummiert werden, um die Durchschnittstemperatur für einen Monat zu berechnen?