import java.util.List;

public class ContohTabelKasus {

    static String kelompokUmur(int umur) {
        if (umur < 0) {
            throw new IllegalArgumentException("umur tidak boleh negatif: " + umur);
        }
        if (umur <= 12) {
            return "anak";
        }
        if (umur <= 19) {
            return "remaja";
        }
        if (umur <= 59) {
            return "dewasa";
        }
        return "lansia";
    }

    record Kasus(int umur, String harapan) {}

    static final List<Kasus> TABEL = List.of(
        new Kasus(0, "anak"),
        new Kasus(12, "anak"),
        new Kasus(13, "anak"),      // harapan usang: batas remaja 13
        new Kasus(19, "remaja"),
        new Kasus(20, "dewasa"),
        new Kasus(59, "dewasa"),
        new Kasus(60, "lansia"),
        new Kasus(120, "lansia")
    );

    public static void main(String[] args) {
        System.out.printf("%-6s %-10s %-10s %-7s%n", "umur", "harapan", "aktual", "hasil");
        int lulus = 0;
        int gagal = 0;
        for (Kasus kasus : TABEL) {
            String aktual = kelompokUmur(kasus.umur());
            boolean cocok = kasus.harapan().equals(aktual);
            if (cocok) {
                lulus++;
            } else {
                gagal++;
            }
            System.out.printf("%-6d %-10s %-10s %-7s%n",
                kasus.umur(), kasus.harapan(), aktual, cocok ? "LULUS" : "GAGAL");
        }
        System.out.println("ringkasan: " + lulus + " lulus, " + gagal + " gagal");
    }
}
