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.