06. december 1999 - 11:40Der er
4 kommentarer og 1 løsning
System.in.read()
Hej, er der nogen der ved hvorfor jeg får nogle underlige resultater ved at bruge metoden System.in.read().
Jeg laver et simpelt UI i en kommandoprompt af testårsager, da jeg ikke gider designe skærmbilleder endnu.
Jeg bruger så System.in.read() til at modtage input fra brugeren, men metoden opfører sig underligt, hvis man indtaster noget og trykker enten, springes de efterfølgende System.in.read() metodekald over, eller rettere så virker det som enter bliver registreret for hver af dem. Skal man eventuelt kalde close() på System.in.read(), jeg har dog læst i API-referencen, at den ikke har nogen effekt på System.in.read().
Ok, både og. System.in.read() bruger faktisk en liniebuffer når du taster ind fra tastaturet.
Hvis du derfor taster
a<ENTER>
(hvis du forstår hvad jeg mener) og du læser med ...read() får du værdierne 97 13 og 10 for hhv 'a', CR og LF. Du kunne derfor blot lave en metode der læser det første tegn, og skipper til efter 10. På en unix-maskine vil det måske se anderledes ud.
Jeg ved ikke om der indbygget er en mulighed for en et-tryks-read.
Ja, mit første forslag giver en linie pr. <ENTER>. Og det er både langsommere og fylder mere. Hvis det er et problem kan du købe min 386 med 4 MB RAM :-) Ja, altså lidt langsommere, men ved interaktivt input fra brugeren må det være ligegyldigt.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.