Lettura numeri da file

Conversione di stringhe in interi e reali

Le stringhe si possono convertire in numeri. Questo viene fatto in particolare quando una stringa contiene caratteri numerici, come per esempio:

    String s="123";

La stringa s contiene la sequenza di caratteri '1', '2' e '3', non il valore 123.

La conversione si può fare usando Integer.parseInt per gli interi e Double.parseDouble per i reali.

  String s;
  int x;
  double d;

  ...

  x=Integer.parseInt(s);
  d=Double.parseDouble(s);

Lettura interi e reali da file

Se ogni linea del file contiene soltanto un intero, si può leggere facendo:

  String s;
  int x;

  s=b.readLine();
  x=Integer.parseInt(s);

Si può procedere in modo simile nel caso dei reali.

Nota: Se una linea contiene due interi, oppure una stringa che non è un intero, la conversione dà un errore.

Esempio di lettura interi

Esercizio: Dato un file che contiene un intero per linea, stampare tutti gli interi aumentati di due.

Il programma SommaDue.java contiene la soluzione.

import java.io.*;

class SommaDue {
  public static void main(String args[])
  throws IOException {
    FileReader f;
    f=new FileReader("numeri.txt");

    BufferedReader b;
    b=new BufferedReader(f);

    String s;
    int x;

    while(true) {
      s=b.readLine();
      if(s==null)
        break;

      x=Integer.parseInt(s);
      System.out.println(x+2);
    }
  }
}


È il solito ciclo di scansione con lettura per righe, con la sola differenza che a ogni passo si converte in intero e poi si stampa il numero aumentato di due.

Nota: Perchè devo convertire in intero?

Perchè la somma non è definita sulle stringhe: se s e p sono due stringhe, allora s+p è la stringa che si ottiene per concatenazione delle due.

  String s="123";
  String p="23";

  System.out.println(s+p);

Viene stampato 12323, non 146.