Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    Siamo d'accordo che se non do INVIO i dati non arrivano al programma.
    Quello che mi chiedo è come vengano gestiti gli escape (o newline nel caso specifico). Se il System.in.read() lo tolgo dal do/while interno (lasciando soltanto la verifica sull'esattezza del char), in console vedo - giustamente - la conseguenza di tre byte non verificati dal while, cioè mi scrive tre volte
    codice:
    Premi un tasto seguito da INVIO:
    I byte vengono letti uno per volta, qua ci sono, ma se inizia col verificare il char (la prima 'p' del tuo "pippo"), come fa a restare nel do/while interno per "neutralizzare" le newline?
    Non riesco a spiegarmi meglio.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Gas75 Visualizza il messaggio
    come fa a restare nel do/while interno per "neutralizzare" le newline?
    Il ciclo

    codice:
    do { 
        ch = (char) System.in.read();
    } while(ch == '\n' | ch == '\r');

    tradotto a parole significa: ripeti l'input se il carattere è '\n' (Line-Feed) oppure '\r' (Carriage-Return).
    Il risultato finale è una logica di input che "scarta" CR/LF, ovvero dopo la fine del while sei sicuro che ch NON è né il CR né il LF ma appunto un altro carattere.

    E' come se questo do-while fosse una ipotetica (!) funzione read_ignora_cr_lf() . Se riscrivessi il tutto come:

    codice:
    do { 
        System.out.print("Premi un tasto seguito da INVIO: "); 
        ch = read_ignora_cr_lf();
    } while(ch != 'q');

    ti "quadra" di più?
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.