Zahozeni hodnoty z mezipameti – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zahozeni hodnoty z mezipameti – Java – Fórum – Programujte.comZahozeni hodnoty z mezipameti – Java – Fórum – Programujte.com

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Pergoly a střechy Brno

robin
~ Anonymní uživatel
20 příspěvků
27. 10. 2021   #1
-
0
-

Ahoj, marne tady badam, jak Java pozna z ktereho radku, ze nekdo vlozil jiny znak, nez je ulozen v promenne odpoved.
Autor knihy sice napise poznamku // zahoď jakýkoli jiný znak ve vstupní mezipameti,ale uz nic vic
Jak ma clovek prelozit do lidske reci treba radek:
ignoruj = (char) System.in.read(); } while (ignoruj != '\n');


2.Jestli dobre chapu, tak promenne ignoruj = (char) System.in.read(); a zn = (char) System.in.read(); uchovavaji stejny vstup z klavesnice, jak jako pak "zahod jakykoliv jiny znak?" Rad bych to pochopil, staci, kdyz naznacite, uz se snad chytnu. Dekuju
 

// Hra na uhodnutí písmene, 4. verze.
public class Hadani4 {
public static void main(String args[])
throws java.io.IOException {
char zn, ignoruj, odpoved = 'K';

do {
    System.out.println("Myslím na písmeno mezi A až Z.");
    System.out.print("Zkus jej uhodnout: ");
    // přečti znak
    zn = (char) System.in.read();



// zahoď jakýkoli jiný znak ve vstupní mezipaměti
do {
ignoruj = (char) System.in.read();
} while (ignoruj != '\n');

if(zn == odpoved) System.out.println("** Správně**");
    else {
    System.out.print(" ... Promiň, ale jsi ");
    if (zn < odpoved) System.out.println("příliš nízko");
    else System.out.println("příliš vysoko");
    System.out.println("Zkus to znovu!\n");

    }
   } while (odpoved != zn);
  }
}
Nahlásit jako SPAM
IP: 212.4.155.–
gna
~ Anonymní uživatel
1549 příspěvků
28. 10. 2021   #2
-
0
-

Vstup toho programu je řádkový a ten znak zadáváš jako <znak><enter>. Případně jako <několik znaků><enter> a program zajímá jen první znak.

Takže ten program načte první znak a pak všechny další až do konce řádku ('\n'). To zahození spočívá v tom, že se s tím zbytkem nic nedělá, jen se to vytáhne ze vstupu, aby to tam neviselo.

A trochu se to rozbije, když zadáš prázdný řádek. Prvni read načte konec řádku a pak to čte a ignoruje data až do konce dalšího řádku.

Nahlásit jako SPAM
IP: 213.211.51.–
robin
~ Anonymní uživatel
20 příspěvků
28. 10. 2021   #3
-
0
-

#2 gna
Dekuji za vysvetleni, ale jak si mam prosim te prelozit ty dva radky do cestiny:


ignoruj = (char) System.in.read();

} while (ignoruj != '\n');
 

Nahlásit jako SPAM
IP: 212.4.155.–
gna
~ Anonymní uživatel
1549 příspěvků
28. 10. 2021   #4
-
0
-

   

dělej {
  znak = načti_znak();
} dokud (znak není '\n');

// '\n' je znak konce řádku
// čtení se opakuje dokud se nedojde na konec řádku
Nahlásit jako SPAM
IP: 213.211.51.–
robin
~ Anonymní uživatel
20 příspěvků
29. 10. 2021   #5
-
0
-

#2 gna
Opravte mne prosim, zda to napisi spravne,jak pracuje kod postupne s vlozenymi  pismeny :

Pokud bych zadal vstup napr. znaky JKL, tak to prvni "read()" nacte "J" a skoci hned do If(patri do prvniho "Do-While") a pote pokracuje do "While".

Jaky je pak prubeh s dalsim pismenem "K" ? S tim uz se pokracuje jen do druheho "Do-While", stejne tak s tretim pismenem "L"? Aspon tak se mi to jevi.

Druhe a treti pismeno se jiz pak nikde nevypisi.

Nahlásit jako SPAM
IP: 212.4.155.–
gna
~ Anonymní uživatel
1549 příspěvků
29. 10. 2021   #6
-
0
-

Trochu nerozumím tomu skákání do ifu. Když zadáš "JKL\n", tak:

// první znak
do zn se načte 'J'

// cyklus do konce řádku
do ignoruj se načte 'K'
a protože to není '\n', tak se cyklus opakuje

do ignoruj se načte 'L'
a protože to není '\n', tak se cyklus opakuje

do ignoruj se načte '\n'
a protože to je \n, tak cyklus končí

// vyhodnocení
až pak přijde na řadu ten if, jestli zn je správná odpověď.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý