| Kayttajatunnus.java |
1 package tentti09;
2
3 /**
4 * Käyttäjätunnusgeneraattori
5 * @author vesal
6 *
7 */
8 public class Kayttajatunnus {
9
10 /**
11 * Muuttaa kirjaimen käyttäjätunnukseen kelpaavaksi.
12 * Kirjain muutetaan pieneksi ja skandeista poistetaan pisteet.
13 * Tuntemattomat kirjaimet ja mahdolliset välimerkit korvataan
14 * 1-merkillä.
15 * @param c muutettava kirjain
16 * @return käyttäjätunnukseen kelpaava kirjain
17 * @example
18 * <pre name="test">
19 * muutaKirjain(' ') === '1';
20 * muutaKirjain('2') === '1';
21 * muutaKirjain('A') === 'a';
22 * muutaKirjain('B') === 'b';
23 * muutaKirjain('a') === 'a';
24 * muutaKirjain('Ä') === 'a';
25 * muutaKirjain('Ö') === 'o';
26 * muutaKirjain('ö') === 'o';
27 * </pre>
28 */
29 public static char muutaKirjain(char c) {
30 final String mitka = "åäö";
31 final String miksi = "aao";
32 char lc = Character.toLowerCase(c);
33 int i = mitka.indexOf(lc);
34 if ( i >= 0 ) return miksi.charAt(i);
35 if ( lc < 'a' ) return '1';
36 if ( lc > 'z' ) return '1';
37 return lc;
38 }
39
40 /**
41 * Aliohjelma muuttaa nimen käyttäjätunnukseksi.
42 * Käyttäjätunnus muodostetaan yhdistämällä käyttäjän
43 * etunimen ensimmäinen kirjain ja sukunimen ensimmäiset
44 * seitsemän merkkiä, jolloin käyttäjätunnuksesta tulee 8 merkkiä pitkä.
45 * Jos sukunimessä ei ole seitsemää merkkiä, sukunimi otetaan mukaan
46 * kokonaisuudessaan.
47 * Kirjaimet ä, ö ja å korvataan kirjaimilla a, o ja a.
48 * Käyttäjätunnus sisältää ainoastaan pieniä kirjaimia.
49 * @param etunimi muutettavan nimen etunimi
50 * @param sukunimi muutettvan nimen sukunimi
51 * @return nimien perusteella muodostettu käyttäjätunnus
52 * @example
53 * <pre name="test">
54 * teeTunnus("Martta","Hänninen") === "mhannine"
55 * teeTunnus("Åke","Ek") === "aek"
56 * teeTunnus("Björn","Björnström") === "bbjornst"
57 * </pre>
58 */
59 public static String teeTunnus(String etunimi, String sukunimi) {
60 String alku = "";
61 if ( etunimi.length() > 0 ) alku = ""+muutaKirjain(etunimi.charAt(0));
62 int pituus = Math.min(8-alku.length(),sukunimi.length());
63 StringBuilder tunnus = new StringBuilder(alku);
64 for (int i=0; i<pituus; i++)
65 tunnus.append(muutaKirjain(sukunimi.charAt(i)));
66 return tunnus.toString();
67 }
68
69
70
71 /**
72 * @param args
73 */
74 public static void main(String[] args) {
75 // TODO Auto-generated method stub
76
77 }
78
79 }
80