Avatar billede jonesw Nybegynder
06. november 2009 - 20:37 Der er 3 kommentarer og
1 løsning

Problemer med hasNext

Jeg har en while løkke som gør nogle forskellige ting som køre evigt, men jeg har behov for at den stopper hvis man f.eks. trykker X. Jeg prøver så at finde ud af om der er trykket noget via hasNext metoden som er tilknyttet scanner objectet. Men problemet er at hasNext har et problem med at det stopper mens den venter på input, som der står beskrevet her: http://java.sun.com/javase/6/docs/api/java/util/Scanner.html#hasNext%28%29
ER der nogen anden måde at finde ud af om der bliver indtastet på keyboardet som bliver opfanget af scanner klassen?
Avatar billede arne_v Ekspert
06. november 2009 - 20:56 #1
Du leder efter kbhit() i Java?  (C funktion under DOS)

Den slags er normalt ret OS specifikt og dermed ikke lige Java's kop te.

Mit bedste råd er at skifte til GUI (Swing).

Mit næstbedste råd er at lade Scanner vente, men køre det der skal køre i en tråd.
Avatar billede preppydude Nybegynder
06. november 2009 - 21:22 #2
Java er en wrapper om OS funktionerne, dermed er det ret ligemeget om det er på Unix, Linux eller Windows - funktionen virker og gør det samme lige meget hvad.

Men ja, gør som arne_v siger, kør dit loop i en anden thread og så tjek om den skal stoppes o.l. fra main thread. Kan ikke give et eksempel da jeg ikke er så meget inde i Java, og formentlig aldrig vil komme det. ;)
Avatar billede jonesw Nybegynder
07. november 2009 - 11:52 #3
Jeg søgte på google efter kbhit og fandt metoden System.in.available(). Den retunere hvor stor en byte strøm som kommer fra keyboardet. så hvis den er større end 0 så er der blevet indtastet noget. Man skal dog trykke på enter for at der er noget som bliver registreret i available...
Hvis det bliver for grimt, bruger vi i stedet preppydudes forslag med at smide det over i en anden tråd.
Eftersom at jeg har brugt noget fra jer begge vil i dele point?
Avatar billede arne_v Ekspert
07. november 2009 - 14:23 #4
ok - svar fra mig
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester