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);
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.
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.