Deo zbornika Učimo Javu
Pretvaranje strune u broj
Prilikom obrade korisničkog inputa često je potrebno neki String
pretvoriti u int
. To se radi uz pomoć statičke metode Integer.valueOf(String s)
u kombinaciji s (nestatičkom) metodom intValue()
koje pripadaju klasi java.lang.Integer
.
Npr. strunu “22” pretvorili bismo u celi broj (int
) 22 na sljedeći način:
int i = Integer.valueOf("22").intValue();
S tipovima double
, float
i long
postupamo slično, koristeći statičke metode Double.valueOf(String s)
, Float.valueOf(String s)
i Long.valueOf(String s)
u kombinaciji s odgovarajućim metodama doubleValue()
, floatValue()
i longValue()
koje pripadaju klasama java.lang.Double
, java.lang.Float
i java.lang.Long
.
Strunu “22” pretvorili bismo u long
22 ovako:
long l = Long.valueOf("22").longValue();
String “22.5” pretvorili bismo u float
ili double
ovako:
double x = Double.valueOf("22.5").doubleValue();
float y = Float.valueOf("22.5").floatValue();
Različite valueOf()
metode relativno su inteligentne i mogu prepoznati znakove plus i minus, eksponente i ostale uobičajene brojčane formate. Međutim, ako kao argument dobiju nešto potpuno ne-numeričko, npr. “Hello World”, vjerojatno će izbaciti NumberFormatException
.
Primer
Dat je program E = mc2, tako da masa u kilogramima bude prihvaćena kao korisnički unos sa komandne linije. Ovaj postupak tipičan je za mnoge programe.
class mc2 {
public static void main (String args[]) {
double mass;
double c = 2.998E8; // meters/second
double E;
mass = Double.valueOf(args[0]).doubleValue();
E = mass * c * c;
System.out.println(E + " Joules");
}
}
Ovaj program morate pokrenuti iz konzole i proslediti mu argument na sledeći način:
% javac mc2.java
% java mc2 0.0456
4.098529824E15 Joules
Primijetite da ne bi bilo dovoljno staviti
Mass = Double.valueOf(args[0]); // izostavljena je metoda doubleValue()
Statička metoda Double.valueOf(args[0])
vratit će vrijednost tipa Double
, a tek će metoda doubleValue()
pretvoriti tu vrijednost u vrijednost tipa double
. Zato bi navedena linija izazvala grešku u kompajliranju:
% javac mc2.java
mc2.java:8: incompatible types
found : java.lang.Double
required: double
mass = Double.valueOf(args[0]);
^
1 error
Izvor: Elliotte Rusty Harold, Java Lecture Notes, preveo Draško Budin, priredio Damjan Pavlica.