Visualizzazione dei risultati da 1 a 3 su 3

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    15

    Dubbio sulla classe scanner

    Ho un dubbio sulla classe Scanner. Ovvero, perché la seguente funziona se scritta in questo modo e non nella variante con la riga commentata al posto di quella che c'è:

    codice:
    import java.util.*;
    import java.io.*;
    
    
    public class ProvaScanner
    {
        Scanner s=null;
        public static void main(String args[])
        {
            Scanner s=null;
            File file=new File(args[0]);
            try
            {
                s=new Scanner(file);
            }
            catch(Exception exc)
            {
                System.out.println("Eccezzione");
            }
            
            while(s.hasNextLine())
            {
                String a=s.nextLine();
                int b=Integer.parseInt(s.nextLine());  //int b=s.nextInt();
                String c=s.nextLine();
                System.out.println(c);
            }
        }
    }

    su un file del tipo:

    codice:
    prima riga
    1
    terza riga
    quarta riga
    2
    sesta riga

    Grazie.
    Ultima modifica di LeleFT; 02-01-2015 a 10:45 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da andy_ Visualizza il messaggio
    Ho un dubbio sulla classe Scanner. Ovvero, perché la seguente funziona se scritta in questo modo e non nella variante con la riga commentata al posto di quella che c'è
    Bisogna prestare sempre molta attenzione a mixare nextLine() con gli altri next()/nextXyz() ! Perché ad esempio con nextInt() se digiti 1 e poi <invio> il invio non viene scartato ma rimane nel suo buffer interno di Scanner. Ad un prossimo nextLine() ... prende subito una riga vuota "".

    Non è un baco o che ... è così by design.
    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
    Dec 2014
    Messaggi
    15
    Quindi con file formattati in quel modo conviene sempre usare nextLine() e si dovrebbe essere abbastanza al sicuro da errori di questo tipo??

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.