import java.awt.*; import java.awt.event.*; class PnrComponent extends TextField implements ActionListener { String date, number; PnrComponent () { super(12); // anropa superklassens (TextFields) konstruktor this.addActionListener(this); // koppla lyssaren, var komponent lyssnar } // pa sig sjalv public void actionPerformed (ActionEvent e) { if (pnrOK(getText())) // getText() hamtar inskriven text setText(date + '-' + number); // skriv ny text i rutan else setText("Incorrect"); // skriv felmeddelande i rutan } /* pnrOK gor INTE ALLS en fullstandig kontroll av personnumret. Den kollar inte att det ar ett korrekt datum, den kollar inte att inmatade tecken ar siffror. Antalet inmatade tecken och checksiffran ar de enda kontrollerna. */ boolean pnrOK (String pnr) { if (pnr.length() <10) // nagra kontroller av return false; // inlast personnummer boolean hasdash = pnr.charAt(6)=='-'; // langt ifran fullstandigt if (hasdash && pnr.length()<11) return false; date = pnr.substring(0,6); // ge varde till instansvariablerna date och number if (hasdash) number = pnr.substring(7,11); //delstrang fran tecken 7 till 10 else number = pnr.substring(6,10); //delstrang fran tecken 6 till 9 int digsum = checksum(date) + checksum(number); return digsum % 10 == 0; // true om digsum ar delbar med 10 } int checksum (String s) { int digsum = 0; int fac = 2; for (int i=0; i