Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    5

    Lettura di un singolo carattere

    Salve volevo sapere se con il metodo Scanner di java.utils è possibile leggere un singolo carattere


    vi spiego il problema
    ho bisogno che ad una domanda l'utente risponda con 's' oppure con 'n'
    se uso scanner con
    Scanner ingersso = new Scanner(in);
    String n = ingresso.nextLine();

    non funziona perchè evidentemente oltre al carattere mi legge pure il return
    c'e' un modo di ovviare a questo problema
    magari usando tipo un nextChar() (anche se non esiste..qualcosa di simile)

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Lettura di un singolo carattere

    Originariamente inviato da piz123
    vi spiego il problema
    ho bisogno che ad una domanda l'utente risponda con 's' oppure con 'n'
    L'input da console comunque è "bufferizzato". Vuol dire che dopo aver digitato 's' o 'n' si deve comunque premere invio affinché il tutto venga ricevuto dallo Scanner.

    Originariamente inviato da piz123
    se uso scanner con
    Scanner ingersso = new Scanner(in);
    String n = ingresso.nextLine();

    non funziona perchè evidentemente oltre al carattere mi legge pure il return
    Come ho detto prima, devi comunque premere invio. A quel punto in 'n' hai la riga inserita (non è compreso alcun newline!) e potresti confrontare con equals() se contiene "s" o "n".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    5
    grazie problema risolto

    pero volevo sapere per curiosita se esisteva un metodo che leggeva solo il carattere e non la stringa
    una ' scanf("%c", &carattere); ' del c...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da piz123
    pero volevo sapere per curiosita se esisteva un metodo che leggeva solo il carattere e non la stringa
    una ' scanf("%c", &carattere); ' del c...
    Scanner è stato fatto per estrarre dei "token", non singoli caratteri, lo dice bene la documentazione: A Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace.

    C'è un delimitatore, per default un "whitespace". Se si prova a togliere il deliminatore .... prova questo:

    codice:
    Scanner sc = new Scanner(System.in);
    sc.useDelimiter("");
    
    while (sc.hasNext()) {
        String token = sc.next();
        System.out.println("token = [" + token + "]");
    }
    Così il token estratto è ogni singolo carattere ma .... prendi tutto, compresa la sequenza di newline!!!!
    Non so quanto possa essere utile e avere senso .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.