Integer.parseInt în Java

Transformă un text ca "42" în numărul întreg 42; valueOf face același lucru, dar returnează un obiect Integer.

Sintaxă
static int parseInt(String s)
static int parseInt(String s, int baza)
static Integer valueOf(String s)
static Integer valueOf(int i)

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 NumberFormatException când textul vine de la utilizator: programul se oprește la prima greșeală de tastare.
  • Încerci Integer.parseInt("3.5"): pentru zecimale folosește Double.parseDouble.
  • Compari rezultatele lui valueOf cu ==: sunt obiecte. Folosește parseInt câ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[].