Sprejemanje vnosa znakov iz optičnega bralnika
Poskušam najti način za vnos znakov
s tipkovnice.
Poskušal sem uporabiti:
Scanner reader = new Scanner(System.in);
char c = reader.nextChar();
Ta metoda ne obstaja.
Poskusil sem vzeti c
kot string
. Vendar to ne bi vedno delovalo v vsakem primeru, saj druga metoda, ki jo kličem iz svoje metode, zahteva kot vhodni podatek znak
. Zato moram najti način, kako izrecno sprejeti znak kot vhod.
Kakršna koli pomoč?
112
3
Prvi znak lahko vzamete iz
Scanner.next
:Če želite porabiti točno en znak, lahko uporabite:
Če želite porabiti strogo en znak, lahko uporabite:
Za pridobitev znaka iz optičnega bralnika ni metode API. Vrstico morate dobiti z uporabo metode
scanner.next()
in na vrnjeni vrstici uporabiti metodoString.charAt(0)
.Za varnost pri belih presledkih lahko najprej pokličete
trim()
na niz, da odstranite vse bele presledke.Te težave se lahko lotite na tri načine:
Če želite prebrati preostanek vrstice kot znake, iterirajte po preostalih znakih v nizu. Drugi odgovori imajo to kodo.
Uporabite
setDelimiter("")
, da nastavite ločilo na prazen niz. To bo povzročilo, da bonext()
opravil tokenizacijo v nize, ki so dolgi natanko en znak. Tako lahko nato večkrat pokličetenext().charAt(0)
za iteracijo znakov. Nato lahko nastavite ločilo na prvotno vrednost in nadaljujete s pregledovanjem na običajen način!Uporabite API bralnika namesto API optičnega bralnika. Metoda
Reader.read()
zagotovi branje enega znaka iz vhodnega toka. Na primer:Pri branju iz konzole prek
System.in
vhodni podatek običajno shrani operacijski sistem in ga "sprosti" aplikaciji šele, ko uporabnik vnese ENTER. Če torej nameravate, da se bo vaša aplikacija odzivala na posamezne udarce po tipkovnici, to ne bo delovalo. Za to bi morali narediti nekaj stvari, ki so značilne za operacijski sistem, da bi izklopili ali obšli predpomnilnik vrstic za konzolo na ravni operacijskega sistema.Sklic: