Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339

    Metodo readLine

    Salve a tutti.
    Devo leggere da un file di testo(money.txt) diverse linee contenenti informazioni del tipo : pezzi#valore&

    ho fatto cosi:

    codice:
     BufferedReader in = new BufferedReader(new FileReader("money.txt"));
    			 
    			 String linea;
    			 while((linea=in.readLine())!= null){
    				 String linea2 = in.readLine();
    				 StringTokenizer st = new StringTokenizer(linea2, "#,$");
    				 int npezzi = Integer.parseInt(st.nextToken());
    				 double valore = Double.parseDouble(st.nextToken());
    volevo sapere :

    chiamando ogni volta il metodo readLine() , esso legge sempre la stessa linea oppure va automaticamente a leggere la prossima?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Metodo readLine

    Originariamente inviato da Markus85
    volevo sapere :

    chiamando ogni volta il metodo readLine() , esso legge sempre la stessa linea oppure va automaticamente a leggere la prossima?
    Ogni chiamata di readLine() restituisce la linea corrente e poi sposta il cursore a quella successiva.
    Ti bastava provare
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Ok.
    Io nel codice ho usato un altra Stringa "linea2"....
    dovevo operare su linea?
    oppure va bene come ho fatto nel codice?

    codice:
    BufferedReader in = new BufferedReader(new FileReader("money.txt"));
    			 
    			 String linea;
    			 while((linea=in.readLine())!= null){
    				 String linea2 = in.readLine();
    				 StringTokenizer st = new StringTokenizer(linea2, "#,$");
    				 int npezzi = Integer.parseInt(st.nextToken());
    				 double valore = Double.parseDouble(st.nextToken());

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Markus85
    Ok.
    Io nel codice ho usato un altra Stringa "linea2"....
    dovevo operare su linea?
    oppure va bene come ho fatto nel codice?

    codice:
    BufferedReader in = new BufferedReader(new FileReader("money.txt"));
    			 
    			 String linea;
    			 while((linea=in.readLine())!= null){
    				 String linea2 = in.readLine();
    				 StringTokenizer st = new StringTokenizer(linea2, "#,$");
    				 int npezzi = Integer.parseInt(st.nextToken());
    				 double valore = Double.parseDouble(st.nextToken());
    No, il codice sopra è sbagliato.
    Ogni invocazione del metodo readLine(), legge la linea dal file e fa avanzare il puntatore.

    Con il codice postato da te, vai da operare solo sulle righe in posizione pari, saltando tutte le linee in posizione dispari. Infatti: nel while() prendi la prima riga e la metti nella variabile "linea"; subito dopo prendi la seconda e la metti nella variabile "linea2", ecc... e che succede se il file ha un numero dispari di righe? Otterrai una bella eccezione appena cercherai di andare a leggere la riga successiva all'ultima.

    Non è quello il modo di operare: devi usare la variabile "linea" dentro il ciclo while...

    codice:
    String linea;
    while((linea=in.readLine())!= null) {
       StringTokenizer st = new StringTokenizer(linea, "#,$");
       int npezzi = Integer.parseInt(st.nextToken());
       double valore = Double.parseDouble(st.nextToken());
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Markus85
    Ok.
    Io nel codice ho usato un altra Stringa "linea2"....
    dovevo operare su linea?
    oppure va bene come ho fatto nel codice?

    codice:
    BufferedReader in = new BufferedReader(new FileReader("money.txt"));
    			 
    			 String linea;
    			 while((linea=in.readLine())!= null){
    				 String linea2 = in.readLine();
    				 StringTokenizer st = new StringTokenizer(linea2, "#,$");
    				 int npezzi = Integer.parseInt(st.nextToken());
    				 double valore = Double.parseDouble(st.nextToken());
    linea e linea2 contengono due righe differenti del file...In pratica stai lavorando su una riga sì e una no.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Ciao.
    Scusa se ti ho ripetuto la domanda , nel messaggio precedente non avevo letto tutto.
    Grazie per l'aiuto.

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.