Es hört auf zu existieren.
Monat
speichernEs ist möglich ein Runtime-Objekt zu speichern. Das ist ein fortgeschrittenes Thema.
Hier ist ein erweiterter MonatTester
, der dem Anwender die Möglichkeit gibt
die Daten in einer Textdatei zu speichern.
Eine Verbesserung des Programms wäre es, den Anwender nach dem Dateinamen zu fragen. Eine weitere Verbesserung wäre es die Daten von einer Datei einzulesen. Das hört sich nach einer guten Idee für Programmieraufgaben an.
import java.util.Scanner; import java.io.*; // fuer PrintWriter 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 ); // Daten in einer Datei speichern System.out.print("Datei in einer Datei speichern (J/N)? "); zeile = scan.next(); if ( zeile.toUpperCase().charAt(0) == 'J' ) { try { // Beispiel Windows PrintWriter output = new PrintWriter( "c:/daten/monatsDaten.txt" ); output.print( jan.toString() ) ; output.close(); System.out.println("Datei erfolgreich gespeichert."); } catch(IOException e) { System.out.println("Datei konnte nicht gespeichert werden!"); } } } }
Hinweise: PrintWriter
könnte eine IOException
auslösen. Falls eine Ausnahme ausgelöst wird, wird der catch
-Block ausgeführt. Damit der Compiler PrintWriter
findet, muss das Package PrintWriter
importiert werden.
Die beispielhafte Pfadangabe oben für PrintWriter
funktioniert für das Betriebssystem Windows. Für Unix und ähnliche Betriebssystem inklusive macOS könnt Ihr z.B. so etwas wie die folgende Pfadangabe probieren:
/home/user/docs/monatsDaten.txt
Was könnte passieren, wenn wir close
vergessen?