Ce face Integer.parseInt
Integer.parseInt(s) citește un număr întreg scris ca text și returnează un int. Textul poate începe cu - sau +, dar nu poate conține spații, zecimale sau separatori de mii. Dacă textul nu este un număr valid (sau iese din limitele lui int), metoda aruncă NumberFormatException.
Varianta cu baza citește numere în altă bază: 2 pentru binar, 16 pentru hexazecimal. Integer.valueOf(s) face aceeași conversie, dar returnează un Integer (obiect); valueOf(int) transformă un int în Integer și refolosește obiectele pentru valorile între -128 și 127.
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul cu numărul. |
baza |
Baza de numerație, între 2 și 36 (implicit 10). |
i |
Pentru valueOf(int): valoarea de împachetat. |
Ce returnează
parseInt: un int. valueOf: un Integer. Aruncă NumberFormatException pentru text invalid.
Exemple
Exemplul 1: Conversii reușite
public class Main {
public static void main(String[] args) {
int varsta = Integer.parseInt("21");
int sold = Integer.parseInt("-350");
System.out.println(varsta + 1);
System.out.println(sold);
System.out.println(Integer.parseInt("1010", 2));
System.out.println(Integer.parseInt("ff", 16));
Integer obiect = Integer.valueOf("2026");
System.out.println(obiect);
}
}
Rezultat
22
-350
10
255
2026
Exemplul 2: Text invalid
Spațiile, zecimalele și numerele prea mari nu sunt acceptate. Folosește strip() înainte dacă textul poate avea spații.
public class Main {
public static void main(String[] args) {
String[] texte = {" 42", "3.5", "12 lei", "3000000000", ""};
for (String t : texte) {
try {
System.out.println(Integer.parseInt(t));
} catch (NumberFormatException e) {
System.out.println("Invalid: " + e.getMessage());
}
}
System.out.println(Integer.parseInt(" 42".strip()));
}
}
Rezultat
Invalid: For input string: " 42"
Invalid: For input string: "3.5"
Invalid: For input string: "12 lei"
Invalid: For input string: "3000000000"
Invalid: For input string: ""
42
Exemplul 3: Citirea unei note de la tastatură
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String linie = in.nextLine();
try {
int nota = Integer.parseInt(linie);
System.out.println("Nota primită: " + nota);
} catch (NumberFormatException e) {
System.out.println("„" + linie + "” nu este un număr");
}
}
}
}
Ce scrie utilizatorul (intrare)
9
zece
Rezultat
Nota primită: 9
„zece” nu este un număr
Greșeli frecvente
- Nu prinzi
NumberFormatExceptioncând textul vine de la utilizator: programul se oprește la prima greșeală de tastare. - Încerci
Integer.parseInt("3.5"): pentru zecimale foloseșteDouble.parseDouble. - Compari rezultatele lui
valueOfcu==: sunt obiecte. FoloseșteparseIntcând ai nevoie doar de număr.
Comenzi înrudite
Integer: Clasa wrapper pentru int: obiectul care învelește un număr întreg, plus constante și metode de conversie.Integer.toString: Transformă un număr întreg în text, în baza 10 sau în orice bază între 2 și 36.Long.parseLong: Long este wrapperul pentru long (întregi pe 64 de biți); parseLong și valueOf transformă textul în număr.Double.parseDouble: Double este wrapperul pentru double; parseDouble și valueOf transformă un text ca „3.75” în număr cu zecimale.String.valueOf: Transformă orice valoare (număr, boolean, char, obiect, char[]) în String; copyValueOf face un șir dintr-un char[].