Diskuze: System.in.read()
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 11 zpráv z 11.
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.


ponejprv bych chtěl říci, že tohle není ideální příklad na použití
for cyklu, tohle je ukázkový while cyklus
nevím, k čemu přesně ten kod chceš, ale tady optimalizovaný a funkční
kod, co děláto, co jsi chtěl
package common;
import java.io.IOException;
import java.util.Scanner;
class TestFor {
public static void main(String[] args) throws IOException {
final Scanner in = new Scanner(System.in);
int i = 0;
System.out.println("Stiskněte S pro zastavení.");
String input = in.nextLine();
while ( ! "S".equals(input)) {
System.out.println("Průchod č." + ++i);
input = in.nextLine();
}
in.close();
System.out.println("Konec");
}
}
použil jsem while cyklus a pro načítání dat z konzole třídu Scanner
Děkuji za odpověď, ale ten příklad je z české učebnice H. Schildt Java 8, třetí kapitola. V této kapitole se používá System.in.read() a zrovna tento příklad není vysvětlen. Takže jsem si myslel, že odpověď získám zde, popř. nějaký odkaz na tento jev.
Teda jestli jsi ten příklad opsal přesně, tak je to dost blbej příklad,
pan Schild promine.
Nevím přesně, jak funguje System.in.read() - můžu se ti na to podívat -
ale minimálně to použíti fór cyklu je hodně podivné.
Můžu zkusit vyřešit původní problém, jestli máš zájem
tak původní problém je právě v metodě read().
Když si v podstatě zaměníš tu metodu read() za scanner.next(), tak
dosáhneš kýženého výsledku.
Ale jak říká SolusLupusUmbra... pokud tě takhle učí v té učebnici cykly,
tak nejlepší, co pro sebe můžeš udělat, tak hodit tu knížku do
skartovačky.
Drž se toho, co ti tady ukázal Solus. Toto je skutečně ukázkový příklad, kdy je vhodné využít while.
PS: říkejme tomu klidně produce placement:), ale jestli se chceš naučit
skutečně dobře programovat, tak před tím, než si koupíš knížku, tak si
projdi zdejší tutoriály. Máš sto procentní jistotu, že ti bude všechno
fungovat, že to, co se budeš učit, nebude na škodu a hlavně že tady
získáš přímou zpětnou vazbu na celý příklad.
Získáš tak základy a pak už je v knížkách budeš rozšiřovat.
Jinak myslím, že z toho, jak a co tady píšeš, tak se ubíráš dobrým
směrem;) Tak by byla škoda zkazit budoucího programátora
Děkuji za názor, jsem vděčný za každou radu. Pokud bys chtěl pomoci
vyřešit problém, bylo by to fajn. Přikládám stránku z učebnice a
řešení tohoto problému na internetu.
Je mi jasné, že zachycení nějakého znaku je doplněno znaky cr/lf v
ASCII.
Lze to, co napíšu metodou read() nějak přečíst, abych viděl, co tam
je?
Cituji : Existuje nějaký způsob,jak si prohlédnout vyrovnávajíci
paměť po zadání příkazu
"(char) System.in.read()" ?
Ne i ano
Ne, pokud bys chtěl získat informace přímo z JVM. Protože ještě na to
nemáš znalosti. Ano, pokud používáš IDE co bys se svými znalostmi
zvládl. Takže stačí přejit do debug módu v IDE a kód si
odkrokovat(označit breakpointy). Většinou v tooltipu uvidíš danou
hodnotu.
https://ibb.co/JH7p97F
https://ibb.co/VCk1NQr
A vy dva byste se měly stydět. Zapomenou na debug, to je fakt ostuda.
(viz. API ) System.in.read : Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the streamhas been reached, the value -1 is returned. This methodblocks until input data is available, the end of the stream is detected,or an exception is thrown. A subclass must provide an implementation of this method.
Problém System.in.read je že patří to první verze API a je nejstarší. Z důvodu multiplatformovosti Javy se nechová na různých OS(každý OS řeší streamy trochu jinak a to mělo za následek nestejné výsledky z pohledu Java vývojářů) vždy stejně a proto byl nahrazen objektem Scanner, kde již načítání z klávesnice nebo souboru je standardizováno. Ono to je dáno i historickým kontextem, v té době se od Javy se nikdy nečekalo že bude načítat data z konzole.
Děkuji za radu použít debugger. Používám NetBeans a musel jsem
nastudovat základy debug mód tam. Je to šikovná věcička a pomohla
mně.
Jinak posílám na
https://uloz.to/…-schildt-rar
dvě knihy Java 11, které vyšly loni v prosinci. Mohl by někdo napsat, zda
jsou vhodné ke studiu? Děkuji předem.
Ahoj, nevím jak jsou na tom ty tvoje knížky, ale já jsem od Schildta četl Java 7 a byl jsem celkem spokojenej. Líbilo se mně na ni cvičení a otázky pro experta. Podle mě to byla dobře napsaná knížka s dobrými příklady. Dle mě je nejlepší si přečíst článek na ITnetworku a v knize si to "obohatit" a procvičit.
Jejich název je
java-schildt.rar
a jsou samozřejmě v EN. Jsou kompletní.
Ale jo, Schildt patří mezi ty lepší. Ovšem čeština pro začátečníka je prostě čeština.
Zobrazeno 11 zpráv z 11.