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

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.