public class Datoexn3 { public static void main(String[] args) throws GalDato { Dato d1 = new Dato(1999, 13, 30); System.out.println(d1.isodato()); } } class GalDato extends Exception { int aar, maaned, dag; GalDato(int arr, int maaned, int dag) { this.aar = arr; this.maaned = maaned; this.dag = dag; } public String toString() { return "Fejl: Ulovlig dato " + aar + "-" + maaned + "-" + dag; } } class Dato { private int aar, maaned, dag; Dato(int aar, int maaned, int dag) throws GalDato { if (ok(aar, maaned, dag)) { this.aar = aar; this.maaned = maaned; this.dag = dag; } else throw new GalDato(aar, maaned, dag); } public String isodato() { return aar + "-" + tocifre(maaned) + "-" + tocifre(dag); } private static boolean ok(int aar, int maaned, int dag) { return maaned >= 0 && maaned <= 12 && dag >= 1 && dag <= dageimaaned(aar, maaned); } private static int dageimaaned(int aar, int maaned) { int[] dage = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if (skudaar(aar) && maaned == 2) return 29; else return dage[maaned-1]; } private static boolean skudaar(int aar) { return aar % 4 == 0 && aar % 100 != 0 || aar % 400 == 0; } private static String tocifre(int n) { return (n < 10 ? "0" + n : "" + n); } }