Mai mult
Ia o intrare de caractere de la Scanner
Încerc să găsesc o modalitate de a lua o intrare char
de la tastatură.
Am încercat să folosesc:
Scanner reader = new Scanner(System.in);
char c = reader.nextChar();
Această metodă nu există.
Am încercat să iau c
ca String
. Cu toate acestea, nu ar funcționa întotdeauna în toate cazurile, deoarece cealaltă metodă pe care o apelez din metoda mea necesită un char
ca intrare. Prin urmare, trebuie să găsesc o modalitate de a lua în mod explicit un char ca intrare.
Aveți nevoie de ajutor?
112
3
Ai putea lua primul caracter din
Scanner.next
:Pentru a consuma exact un singur caracter ați putea folosi:
Pentru a consuma exact un singur caracter puteți folosi:
Nu există o metodă API pentru a obține un caracter de la Scanner. Trebuie să obțineți șirul folosind
scanner.next()
și să apelați metodaString.charAt(0)
pe șirul returnat.Pentru a fi siguri cu spațiile albe, puteți, de asemenea, să apelați mai întâi
trim()
asupra șirului pentru a elimina orice spații albe.Există trei moduri de abordare a acestei probleme:
Apelați
next()
pe Scanner și extrageți primul caracter din șir (de exemplu,charAt(0)
) Dacă doriți să citiți restul liniei sub formă de caractere, iterați peste caracterele rămase în șir. Alte răspunsuri au acest cod.Utilizați
setDelimiter("")
pentru a seta delimitatorul la un șir gol. Acest lucru va face canext()
să facă tokenizarea în șiruri care au exact un caracter. Astfel, veți putea apela în mod repetitivnext().charAt(0)
pentru a itera caracterele. Apoi puteți seta delimitatorul la valoarea sa inițială și puteți relua scanarea în mod normal!Folosiți API de citire în loc de API de scanare. Metoda
Reader.read()
furnizează un singur caracter citit din fluxul de intrare. De exemplu:Atunci când citiți din consolă prin
System.in
, datele de intrare sunt de obicei stocate în memoria tampon de către sistemul de operare și sunt eliberate aplicației doar atunci când utilizatorul tastează ENTER. Prin urmare, dacă intenționați ca aplicația dvs. să răspundă la fiecare apăsare individuală a tastaturii, acest lucru nu va funcționa. Va trebui să faceți niște chestii specifice codului nativ al sistemului de operare pentru a dezactiva sau pentru a lucra în jurul valorii de line-buffering pentru consolă la nivelul sistemului de operare.Referință: