Ciao a tutti,
C'è una domanda alla quale non riesco a trovare risposta.
Con questo codice:
Riesco ad acquisire in input un carattere, ma devo aspettare che l'utente prema invio prima che lo scanner mi restituisca il suo input.codice:Scanner s = new Scanner(System.in); if(s.hasNext()){ char c = s.next().charAt(0); }
C'è un modo per leggere l'input dell'utente mentre sta digitando, senza dover aspettare che prema "invio"?
Ho provato questo pensando che forse poteva funzionare:
Ma niente, nemmeno questo funziona, aspetta che l'utente prema invio e poi mi stampa uno dopo l'altro i caratteri inseriti.codice:System.out.println("Inserisci qualcosa: "); BufferedReader b = new BufferedReader(new InputStreamReader(System.in)); while(!b.ready()){ try { Thread.sleep(100); } catch (Exception e) { } } while(b.ready()){ char c = (char)b.read(); System.out.println("Ho letto: "+c); }
Altri mi hanno suggerito semplicemente:
Ho da subito pensato che fosse più o meno equivalente al codice che usa il BufferedReader, ma ho comunque provato sperando di sbagliarmi... Il risultato? Niente, fa esattamente la stessa cosa, aspetta che l'utente prema invio e mi stampa tutti i caratteri inseriti, uno dopo l'altro.codice:System.out.println("Inserisci qualcosa: "); while(true){ char c = (char)System.in.read(); System.out.println("Ho letto: "+c); }
C'è modo di catturare l'input sul terminale "live", quindi senza dover aspettare che l'utente prema invio?
Grazie in anticipo, ciao!

Rispondi quotando
emmm , ma hai provato almeno ad eseguirlo??ogni volta che l'utente scrive un carattere esso viene stampato immediatamente sulla console , non si deve premere nessun invio..e poi sì , non ho provato tutti i tuoi frammenti di codice a parte l'ultimo che devo dire funziona pure!

