Diskuze: Smyčka do ... while
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 18 zpráv z 18.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
K čemu tam vůbec slouží ten while? Zdá se mi to zbytečné
Jasně, může se to pořešit pomocí if ... else. Ale zrovna ten cyklus studuju, tak si ho procvičuju. A je to proto, aby se zadání zopakovalo, pokud nebude stisknutá správná klávesa.
Skus načítat znak z klávesnice jiným způsobem, nebo si před načtením
znaku vymaž buffer
= nauč se
se třídou Scanner 
Jojo, se Scannerem umím odtud, v knížce používají tohle řešení, tak jdu jejich cestou, no. Zkusím použít ten Scanner.
Cyklus do-while je cyklus s podmínkou na začátku, od normálního cyklu while se liší tím, že mezi svorkami { } se kód vždycky provede alespoň 1x.
Já vím co je a jak funguje while cyklus 
Jen mi přijde tady naprosto zbytečnej...
Není vůbec zbytečný a přijde mi to jako elegantní řešení. Mohlo by se to řešit ještě možná rekurzí a v nejhorším případě goto ...
Elegantní jo, kdyby se mi to neopakovalo 3x při nesprávném zadání .....

Do-while je nejlepší řešení, ale ty špatně načítáš znaky. Po
načtení jednoho znaku tam ty zbylé necháš a při příštím pokusu tam ty
zbylé načteš, zkus tam například napsat "test" a kolikrát se to
zopakuje.
Můžeš je vyprázdnit například tímto:
while(System.in.read()!='\n');
Nemohl bys mi to prosím tošku víc rozvést? Co mi tam zůstane za znaky?
Ten ENTER, kterým odešlu znak z klávesnice? Spustím, zadám 'L' a cyklus se
3x zopakuje než zůstane stát na tom System.in.read() - viz. obrázek. Na
"test" se zopakuje 6x - i tady je to o 2 více.
A prosím trošku nakopnout, jak vyprázdním ty ostatní znaky navíc.
Problém bude v tom načítání- pokud tomu dobře rozumím, tak ty zadáš 'znak<ENTER>' - enter je bílej znak, ale je tam taky- nechápu teda proč to tiskne 3x, mělo by jako jen 2x, ale to je vcelku jedno, princip je to tenhle..
Trochu jsem to upravil- do-while slouží jako menu, do switche přidal default case (ten se použije když nevyhovuje žádnej jinej), a potom to funguje jak předpokládám, po zadání znaku ok, následně jednou špatně, a opakuje se nová volba..
Btw dávej si pozor teď nevim jak to je sw switchem

http://www.itnetwork.cz/dev-lighter/426
Když ti to upravim ještě pro tu třídu Scanner tak to bude vypadat
takhle
http://www.itnetwork.cz/dev-lighter/427
Scanner.next() ti dá aktuální String ze standardního vstupu (cin, resp. klávesnice), následně .charAt(0) ti dá první znak z řetězce (požadovaný zadaný znak)
A jelikož je v jave možný přetékání Case u switche, tak to funguje i
takhle
http://www.itnetwork.cz/dev-lighter/428
Pokud načítáš znak tak se načtou všechny znaky dokud nezmáčkneš
ENTER, tedy pokud napíšeš "test" tak se ti načte "test" + konec řádku.
Konec řádku se označuje '\n' (a jestli se nepletu tak před tento znak
windows přidávají ještě '\r').
Pokud teda chceš odstranit ty navíc načtené znaky tak načítáš znaky
dokud nenalezneš '\n'.
jak píše tomisoka - \r a \n by pak vysvětlovalo proč to vypisuje 3x

Klucí, díky moc všem.
Zobrazeno 18 zpráv z 18.
