Gyakorlati alapok
Monogram készítése
A fejezet célja egy olyan minialkalmazás készítése, amelyik képes egy összetett névből monogramot vagy rövidítést előállítani, például:
John Fitzgerald Kennedy -> JFK.
A kód ne legyen túl bonyolult, hogy a gyakorló mielőbb megértse belső működését, ez tehát főként azt fogja jelenteni, hogy a név, mint bemeneti adat nem lesz validálva, azaz nem lesz formailag-tartalmilag ellenőrizve.
Gondoljunk bele józan paraszti ésszel, hogy mit is kell tennünk a monogram előállításához:
-
szabványos rutinokkal be kell kérnünk a nevet, de amint már említettem, érvényességét nem ellenőrizzük, típusa pedig praktikusan String lehet,
-
mivel összetett nevet várunk, az alnevek között garantáltan lesz whitespace (szóköz) karakter is. Érdemes ezen átvezető pontoknál feldarabolni és rögtön belegyömöszölni egy szintén String típusú tömbbe vagy ehhez hasonló struktúrába (split(" ")),
-
ekkor azonban a whitespace (szóköz) karakterek, mint haszontalanságok is bekerülnek a tömbbe. Jó kertész módjára ezeket is lecsippentjük a szavakról a trim() nevű virtuális metszőollóval,
-
ezután meg kell keresnünk minden szó 1. karakterét (words[i].toUpperCase().charAt(0)) és nagybetűssé kell alakítanunk (attól függetlenül, hogy eredetileg az volt-e),
-
utolsó lépésként nincs más dolgunk, mint ezen 1. karaktereket kiírjuk a konzolra.
Ötletek összetett nevekre:
-
kis béla károly
-
tinódi lantos sebestyén
-
John fitzgerald kennedy
-
central Intelligence agency
-
mixed martial Arts
Nézzük meg a futtatható Java-kódot:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String name;
System.out.println("Kérem, hogy adja meg a nevet!");
name = scan.nextLine();
String[] words = name.split(" ");
for(int i = 0; i < words.length; i++) {
words[i] = words[i].trim();
}
for(int i = 0; i < words.length; i++) {
char firstLetter = words[i].toUpperCase().charAt(0);
System.out.print(firstLetter);
}
}
}
Végeredmény:
Kérem, hogy adja meg a nevet!
john fizgerald kennedy
JFK