4IT101 šestá přednáška.

Slides:



Advertisements
Podobné prezentace
Standardní knihovní funkce pro práci s textovými řetězci
Advertisements

VISUAL BASIC Práce s řetězci Použitá literatura: Kvoch: Visual Basic 4.
Vaše jistota na trhu IT Další informace o třídách Rudolf Pecinovský
Pascal - příklady.
Programování funkcí v Excelu
VISUAL BASIC Práce se soubory.
Třída Array Je součásti balíčku java.util Účelem je usnadnit práci s poli Metody – nejpoužívanější equel(),fill(),sort() a binarySearch() equels() Slouží.
Pole, ukazatele a odkazy
PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.
Počítače a programování 1. Obsah přednášky Výjimky - základní typy výjimek Způsoby zpracování výjimek.
4IT1014IT101 Pátá přednáška Datové struktury - pokračování Statické prvky třídy.
Vytvoření prvního programu
C# pro začátečníky Mgr. Jaromír Osčádal
Cvičení 2 Proměnné(jednoduché a složené) a konstanty První program Zápis výrazů.
Druhé cvičení Vytváření identifikátorů Datové typy
Desáté cvičení Java Core API Java Collection Framework JavaDoc.
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
Větvení cykly J a v a Začínáme programovat Lucie Žoltá.
J a v a Začínáme programovat Lucie Žoltá pole řetězec debugr.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
4IT101 Testování a ladění, dokumentace API třídy,
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
C# - znakové typy a řetězce
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
4IT101 7.přednáška Třída String a regulární výrazy Algoritmy v kolekcích Vnitřní a vnořené třídy.
OSNOVA: a) Řetězce v C b) Funkce stdio.h pro řetězce c) Funkce string.h pro řetězce d) Příklad Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Třída jako zdroj funkcionality
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka.
Datové typy a práce s nimi
Návrh a tvorba WWW Přednáška 11
Počítače a programování 1 8.přednáška. Obsah přednášky Řetězce - deklarace a vytvoření Základní metody pro práci s řetezci Znaky - třída Character Základní.
Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.
Počítače a programování 1
JavaScript Podmínky, cykly a pole.
Cvičení.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
13/04/20151 Indexery (1) Členy třídy (struktury) umožňující třídě (struk- tuře) používat hranaté závorky a pracovat s ní podobně jako s polem (používat.
KIV/PPA1 cvičení 9 Cvičící: Pavel Bžoch. Osnova cvičení Třída String a její metody –Řetězce a operace s nimi.
1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
STRING A UKAZATELE. Co to je řetězec? Řetězec v Javě je samostatný objekt. Je konstantní, co znamená, že jednou vytvořený řetězec nelze změnit. Chceme-li.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
4. Typ pole 4.1 Jednorozměrná pole
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část I.
Počítače a programování 1 2.přednáška. Základní lexikální struktura programu Program v jazyce Java je tvořen symboly a oddělovači Program Java je psán.
Programování KONSTANTY, ČTENÍ PO JEDNOM ZNAKU GETCHAR() FORMÁTOVANÝ VÝSTUP POMOCÍ PRINTF, VÝVOJOVÉ DIAGRAMY, CYKLY.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Datové typy a operátory Základní programové.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
Makra v Excelu syntaxe. Zápis nahraného makra SubEnd Sub O klíčová slova Sub a End Sub – začátek a konec makra O komentáře O text za znakem ', až do konce.
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Vzorové řešení zápočtového testu
Algoritmizace a programování
Typový příklad 3 – zadání 1
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
C# přehled vlastností.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Transkript prezentace:

4IT101 šestá přednáška

Statické prvky třídy

Třída (další prvky) Statické proměnné Datové atributy Statický inicializační blok Statické metody Metody Konstruktory Vnitřní třídy Statické vnitřní třídy

Statické prvky tříd Statické datové atributy – data společná všem instancím, existují i bez instancí, jakmile s nimi chceme pracovat Statické metody – obdobně jako u statických datových atributů je možné je volat bez existence instance V deklaraci je použito klíčové slovo static

int pocet = Zamestnanec.getPocetZamestnancu(); Zamestnanec pepa = new Zamestnanec (“Pepa”,”Novák”); Zamestnanec jana = new Zamestnanec (“Jana”,”Nováková”); public class Zamestnanec { private static int pocetZamestnancu; private String jmeno; private String prijmeni; public Zamestnanec (String jmeno, String prijmeni){ this.jmeno = jmeno; this.prijmeni = prijmeni; pocetZamestnancu ++; } ……………………………………. public static int getPocetZamestnancu(){ return pocetZamestnancu; prijmeni = null jmeno = null prijmeni = null jmeno = null Pepa Jana Nováková Novák pocetZamestnancu = 0 2 1

Návrhový vzor Utilita Knihovní jednotka Je třeba vytvořit skupinu všeobecně přístupných metod případně konstant, není důvod pro existenci instancí. Řešení je vytvořit třídu se statickými metodami (případně konstantami) a vytvořit soukromý konstruktor.

Třída Math Třída ze standardu Javy, která obsahuje pouze statické konstanty a statické metody Třída nemá veřejný konstruktor, nelze tedy vytvořit instanci Takto navržená třída se označuje jako utilita

Třída Math Jsou zde dvě konstanty Metody pro matematické funkce např. Math.PI Math.E Metody pro matematické funkce např. Math.abs(double a) Math.cos(double a) Math.max(long a, long b) Math.sqrt(double a)

Třída System další utilita ze základního balíčku java.lang poskytuje tři statické proměnné sloužící pro vstup a výstup z/na konzolu (lze přesměrovat jinam) in out err

System.out Statická proměnná System.out je automaticky nasměrovaná na konzolu, je typu PrintStream Nejčastěji se používá pro volání dvou metod: println (String text) print (String text) Metody se liší tím, že print neodřádkuje

Třída System metody z této třídy slouží pro čtení properties, nastavení zabezpečení atd. metoda System.exit(int status) k ukončení aplikace (pokud je někdy třeba skončit jinak než provedením všech příkazů)

Návrhový vzor Singleton Jedináček V aplikaci je třeba, aby existovala pouze jedna snadno dostupná instance dané třídy. Např. plátno v projektech s kreslením. Realizuje se pomocí soukromého konstruktoru a statické metody getInstance().

private static Platno platnoSingleton; /**Tovarni metoda pro ziskani instance * tridy Platno - singleton. */ public static Platno getPlatno() { if(platnoSingleton == null) { platnoSingleton = new Platno("Demonstrační plátno",300, 300,Color.WHITE); } platnoSingleton.setVisible(true); return platnoSingleton; private Platno(String titulek, int sirka, int vyska, Color barvaPozadi){

Metoda main – spouštění javovské aplikace Aby bylo možno spustit aplikaci, musí existovat vstupní bod do aplikace Při spouštění JVM říkáme, jaká třída má být natažena do paměti první java MojeTrida JVM pak hledá v kódu metodu main s následující hlavičkou: public static void main (String [] args) Aplikace provede kód v metodě main a skončí dříve – výjimky, return, metodou System.exit( ), později – čekání na dokončení vláken Metoda nevrací žádnou hodnotu (není možné nastavit žádnou proměnnou, do které by se uložil výsledek) Metoda se musí jmenovat main, protože to je jméno, které hledá JVM Metoda má jako vstupní parametr pole prvků typu String (jméno args je jediné, co lze v hlavičce metody změnit např. na String parametry [], ale obvykle se název pole parametrů nemění

Parametry příkazové řádky public static void main(String [] args) Na příkazovém řádku je možno uvést parametry: java Trida ahoj 15 48 45.4 "Dobry den" Pokud na příkazovém řádku parametry neuvedete, bude vytvořeno pole args s nulovou délkou. Proměnná args tedy nebude obsahovat hodnotu null a args.length bude rovna nule. "ahoj" "15" "48" "45.4" "Dobry den" 1 2 3 4

Datové struktury pro uložení dvojice klíč - hodnota Mapy Datové struktury pro uložení dvojice klíč - hodnota

Mapy Pepa Vašek Dušan 5804 Luboš Jarmila Renata pondělí 8 5806 úterý 9 středa 7 čtvrtek 10 pátek 6

Mapy Lze si je představit jako tabulku se dvěma sloupci. První sloupec představuje klíč, žádné dva klíče si nejsou rovny. Druhý sloupec představuje hodnoty, tady se údaje mohou opakovat. dvě základní implementace: HashMap TreeMap

Deklarace a inicializace mapy private Map <String, Long> pocetSlov = new HashMap<String, Long>(); private Map <Long, Osoba> telSeznam = new HashMap<Long, Osoba>(); private Map <DenVTydnu, Double> odpracovanoHodin = new TreeMap<DenVTydnu, Double>(); v konstruktoru typu EnumMap se musí uvádět i odkaz na soubor .class Červeně označená část inicializace může být ve verzi Javy 7 vynechána (operátor diamant)

Metody pro mapy metoda V put (K key, V value) V get (Object key) V remove (Object key) int size ( ) boolean containsKey (Object key) boolean containsValue (Object value) void clear ( ) Set<K> keySet ( ) Collection<V> values ( ) Set<Map.Entry<V,K>> entrySet ( )

Vytvoření a naplnění mapy Map <String, Integer> mapa = new HashMap<String,Integer>(); mapa.put("pes", 2); mapa.put("pes", 3); mapa.put("kočka", 1); mapa.put(“morče", 1); System.out.println(mapa); {pes=3, morče=1, kočka=1}

Jak by vypadal rychlejší kód pro přičítání jedničky? přičtení jedničky k hodnotě v mapě mapa.put(druh, mapa.get(druh) + 1); se převede na následující operace Integer pocetO = mapa.get("pes“); int pocetN = pocetO.intValue(); Integer pocetVysl = new Integer(pocetN + 1); mapa.put("pes", pocetVysl); uplatnění autoboxingu Jak by vypadal rychlejší kód pro přičítání jedničky?

Procházení mapy přes množinu klíčů – získá se metodou keySet() pomocí cyklu for pomocí iterátoru – při rušení prvků for (String klic : mapa.keySet() ){ System.out.println(klic+"\t"+mapa.get(klic)); }

Mapa seznamů Pepa Vašek Dušan 5804 Luboš Jarmila Renata 5806 Map <Integer, List<String> > telSeznam; telSeznam = new HashMap<Integer, List<String>> ();

void pridejPrvek(int telCislo, String jmeno) { if (mapa.containsKey(telCislo)){ List <String> seznamJmen = mapa.get(telCislo); seznamJmen.add(jmeno); } else { List <String> seznamJmen = new ArrayList<String>(); mapa.put(telCislo, seznamJmen); public void vypisSeznam (){ Set<Integer> seznamKlicu = mapa.keySet(); for (Integer telCislo :seznamKlicu){ List <String> seznamJmen = mapa.get(telCislo); System.out.print(telCislo + "\t\t"); for(String jmeno : seznamJmen) { System.out.print(jmeno +", "); } System.out.println();

Procházení seznamů Pomocí cyklu for („for each“) seznamy, množiny, pole Pomocí indexů v cyklu for pouze seznamy (List) a pole Přes iterator seznamy, množiny Připomenout typ z deklarace kolekce !!!

Procházení kolekce - “for each” for (typ identifikátor : kolekce) { příkaz; } for (String zvire : seznam){ System.out.println(zvire); } Připomenout typ z deklarace kolekce !!! for (String zvire : mnozina){ System.out.println(zvire); }

Procházení seznamu s využitím indexů for (int i = 0; i < seznam.size(); i++) { System.out.println ("" + i + ". " + seznam.get(i)); } 0. morče 1. kočka 2. pes

Odebírání ze seznamů a množin public void odeber(String druh) { for(String zvire : seznam){ if (zvire.equals(druh)){ seznam.remove(druh); } java.util.ConcurrentModificationException

Rozhraní (interface) Iterator<E> public void odeber(String druh){ Iterator<String> ukazovatko = seznam.iterator(); while (ukazovatko.hasNext()) { String zvire = ukazovatko.next(); if (zvire. equals(druh)){ ukazovatko.remove(); } hasNext() next() remove() identifikátor iterátoru !!!!

Znaky a textové řetězce

Znaky primitivní typ char, Unicode, 2B char cSHackem = ’č’; char nejakyZnak = ’\u12ab’; matematické operace – lze přičítat/odečítat pozice v tabulce Unicode obalová třída Character též statické metody pro znaky static boolean isDigit(char c); static boolean isLetter(char c); static boolean isLowerCase(char c); static char toLowerCase(char c); static char toUpperCase(char c); Vysvětlit, že odečtením znak – 32 se nezíská velké písmeno k malému. Např. í – 32 => č Záleží na tom, jaký zdrojový kód pozná překladač.

Escape znaky \t tabulátor \n nový řádek \“ uvozovky \’ apostrof \\ zpětné lomítko \uxxxx vložení znaku Unicode

Národní znaky a překladač různá kódování : ISO-8859-2, CP1250, UTF8 javac –encoding utf8 Trida.java native2ascii – převede do přenositelného tvaru: "čeština" => "\u00c4\u0164e\u0139\u02c7tina"

Třída String String str = “abc”; String str = new String(“abc”); spojování řetězců str = str + “def”; připojování dalších typů str = “vysledek “ + 5; str = “výsledek “ + 3 + 5; str = “výsledek “ + (3 + 5); str = “Účet: “ + mujUcet; read-only třída metody String.valueOf() a o.toString() String.valueOf() o.toString()

Metody třídy String int length() boolean equals(String str) boolean equalsIgnoreCase(String str) boolean endsWith(String koncovka) boolean startsWith(String str)

Co vypíše následující kód? public class Porovnani { public static void main(String[] args) { String ret1 = "length: 10"; String ret2 = "length: " + 10; String ret3 = "length: "+ret1.length(); System.out.println(ret1 == ret2); System.out.println(ret1 == ret3); System.out.println(ret2 == ret3); } true false true false

Metody pro práci s řetězci String toLowerCase() String toUpperCase() String substring(int beginIndex) String substring(int beginIndex, int endIndex) int indexOf(String str) char[] toCharArray()

Formátování řetězců metoda format() ve třídě String, metody printf() u výstupních operací (PrintStream či PrintWriter), interně se používá třída java.util.Formatter příklady: String vystup = String.format("strana: %d/%d“, strana, pocetStran); System.out.printf("úhly – alfa: %f6.4, beta: %f6.4, gama: %f6.4%n“, alfa, beta, gama); System.out.printf("%-30s %2d %f4.2%n", prijmeni, semestr, prumer);

Formátování řetězců specifikace formátu konverze: příznaky %[argument_index$][příznaky][šířka][.přesnost]konverze konverze: d celé číslo v dekadickém tvaru x, h celé číslo hex, f desetinné číslo g desetinné číslo, u velkých čísel vědecký formát t formátování datumu a času b boolean s text, výsledek toString(), popř. null příznaky - zarovnání vlevo 0 vypíše se úvodní nula + u čísel i znaménko + , vloží se oddělovač řádů dle národního prostředí

Lokalizace některé operace s textem závisí na nastavení jazyka a země, tzv. Locale, třída java.util.Locale, Metody závislé na Locale: format(), toLowerCase, toUpperCase() při spuštění JVM se nastaví defaultní Locale,

StringBuffer StringBuilder pomocné třídy pro práci s řetězci „rychlejší“ operace s řetězci, int length() StringBuffer append(String str) StringBuffer append(Object o) StringBuffer insert(int pozice, String str) StringBuffer insert(int pozice, Object o) StringBuffer delete(int zacatek, int konec) String toString() String substring(int beginIndex) String substring(int beginIndex, int endIndex) int length()vrací délku uloženého řetězceStringBuffer append(String str)na konec uloženého řetězce vloží obsah instance třídy StringStringBuffer append(Object o)k uloženému řetězci přidá textovou reprezentaci objektu (výsledek operace String.valueOf(o))StringBuffer insert(int pozice, String str)na zadanou pozici vloží řetězecStringBuffer insert(int pozice, Object o)na zadanou pozici vloží textovou reprezentaci objektu (výsledek operace String.valueOf(o))StringBuffer delete(int zacatek, int konec)smaže znaky z pozice zacatek po pozici konecString toString()vrátí obsah jako instanci třídy StringString substring(int beginIndex) vrací instanci třídy String obsahující část řetězce začínající na zadaném indexuString substring(int beginIndex, int endIndex)vrací instanci třídy String obsahující část řetězce začínající na zadaném indexu a končící druhým indexem

Použití třídy StringBuffer for (String klic: mapa.keySet()) { StringBuffer sb = new StringBuffer(); sb.append("zvire "); sb.append(klic); sb.append(", pocet kusu "); sb.append(mapa.get(klic)).toString(); String radek = sb.toString(); } for (String klic: mapa.keySet()) { String radek = "zvire "+klic+", pocet kusu "+mapa.get(klic); }

Použití třídy StringBuilder StringBuilder sb = new StringBuilder(60); for (String klic: mapa.keySet()) { sb.delete(0, sb.length()); sb.append("zvire ").append(klic); sb.append(", pocet kusu ").append(mapa.get(klic)); String radek = sb.toString(); }

Regulární výrazy od verze 1.4 regulární výraz je posloupnost znaků a symbolů, která definuje skupinu textových řetězců. balíček java.util.regex: třídy Pattern a Matcher výjimka PatternSyntaxException rozšíření třídy String Využívají se např. k validaci vstupů nebo kontrole správnosti formátu dat v souboru.

Třídy Pattern a Matcher Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); rychlejší varianta než u řetězců

Metody třídy String využívající regulární výrazy matches(String vzor) replaceAll(String vzor, String repl) replaceFirst(String vzor, String repl) split(String vzor) split(String vzor, int n)

Syntaxe regulárních výrazů jednotlivé znaky: x konkrétní znak \\ zpětné lomítko (jeden znak) \0n znak zadaný pomocí oktalové soustavy (0-377) \xhh znak zadaný pomocí hexadecimální soustavy \uhhhh znak z Unicode zadaný pomocí hexadecimální soustavy \t tabelátor \n znak LF (linefeed, newline) \r znak CR (carriage-return) \e znak escape

Syntaxe regulárních výrazů množiny znaků, tj jeden ze znaků v zadané množině [abc] jednoduchá množina (tj. jeden ze znaků a b c) [^abc] negace, tj. žádný ze znaků a b c, [a-zA-Z] rozsah znaků (znaky a až z a znaky A-Z) . (tečka) libovolný znak \d číslice, tj. [0-9] \D nečíslice, tj. [^0-9] \s “netisknutelné” znaky, tj mezera, tabelátor, znaky konce řádku a konce stránky, \S opak \s

Syntaxe regulárních výrazů označení hranic ^ začátek řetězce $ konec řetězce \b hranice slova znaky opakování ? předchozí znak bude 1x nebo 0x, * 0 a více opakování předchozího znaku, + předchozí znak je minimálně jedenkrát, {n} přesně n opakování předchozího znaku, {n,} minimálně n opakování předchozího znaku, {m,n} minimálně m a maximálně n opakování předchozího znaku,

Syntaxe regulárních výrazů další operátory XY znaky X a Y musí být vedle sebe, X|Y buď znak X nebo znak Y, (X) označení skupiny, \n obsah n-té skupiny,

Zápis regulárního výrazu v Javě V regulárním výrazu zapsaném ve zdrojovém textu musí být všechny \ zdvojené: "\\s+" " [0-9]+" zeptat se na důvod

Příklady regulárních výrazů Zadání: Napište regulární výraz, který odpovídá řetězci "ahoj" ahoj if (retezec.matches("ahoj")) { vhodnější je if (retezec.equals("ahoj"))

Příklady regulárních výrazů Zadání: Napište regulární výraz, pomocí kterého je možno najít přebytečné mezery v textu \s+ if (retezec.matches("\\s+")) {

Příklady regulárních výrazů napište regulární výraz, pomocí kterého lze zjistit, zda řetězec obsahuje pouze číslice [0-9]+ if (retezec.matches("[0-9]+")) {

Příklady regulárních výrazů Zadání: napište regulární výraz pro kontrolu, zda řetězec je desetinné číslo ve formátu z desetinnou tečkou. -?\d+\.\d+ -?[0-9]+\.[0-9]+

Příklady regulárních výrazů napište regulární výraz, který bude sloužit ke kontrole formátu rodného čísla s lomítkem. [0-9]{6}/[0-9]{3,4} if (retezec.matches("[0-9]{6}/[0-9]{3,4}")) {

Náhrada řetězců String retezec = "vstupní řádek"; String normalizovany = retezec.replaceAll(" +"," "); mezera radek = radek.replaceAll(" (knihu)|(knize) "," kniha ");

Dělení řetězce na části – metoda split() String retezec = "seber knihu"; String [] poleSlovPrikazu = retezec.split(" "); if (poleSlovPrikazu.length >0 ) { slovo1 = poleSlovPrikazu[0]; // první slovo } if (poleSlovPrikazu.length >1 ) { slovo2 = poleSlovPrikazu[1]; // druhé slovo