String la int în Java

String la int în Java

În Java, în timp ce operăm pe șiruri, există momente când trebuie să convertim un număr reprezentat ca șir într-un tip întreg. De obicei facem acest lucru pentru că putem opera cu un set larg flexibil de operații pe șiruri. Metoda folosită în general pentru a converti String în Integer în Java este parseInt () din Clasa de șiruri .

În acest articol, vom vedea cum să convertim un String în int în Java.

Java String la Int

Program pentru a converti șirul Java în int

Să luăm un exemplu imediat pentru a ne obișnui cu metoda de lucru parseInt() :

Java




// Java program to demonstrate working parseInt()> // Where No NumberFormatException is Thrown> // Main class> public> class> GFG {> > // Main driver method> > public> static> void> main(String args[])> > {> > // Custom wide-varied inputs to illustrate> > // usage of valueOf() method> > int> decimalExample = Integer.parseInt(> '20'> );> > int> signedPositiveExample = Integer.parseInt(> '+20'> );> > int> signedNegativeExample = Integer.parseInt(> '-20'> );> > int> radixExample = Integer.parseInt(> '20'> ,> 16> );> > int> stringExample = Integer.parseInt(> 'geeks'> ,> 29> );> > // Print commands on console> > System.out.println(decimalExample);> > System.out.println(signedPositiveExample);> > System.out.println(signedNegativeExample);> > System.out.println(radixExample);> > System.out.println(stringExample);> > }> }>

Ieșire

20 20 -20 32 11670324 

parseInt() Metoda în Java

Există două variante ale acestei metode:

  1. parseInt(String s): Această funcție analizează argumentul șir ca un întreg zecimal cu semn.
  2. parseInt(String s, int radix): Această funcție parsează argumentul șir ca un întreg cu semn în radixul specificat de al doilea argument.

Sintaxa lui parseInt

public static int   parseInt(String str);   public static int   parseInt(String str, int radix); 

Parametrii

  • str: S tring care trebuie convertit într-un număr întreg.
  • radix: este utilizat în timp ce șirul este analizat.

Tip de returnare

  • Ambele metode convertesc șirul în echivalentul său întreg. Singura diferență este aceea a parametrului radix. Prima metodă poate fi considerată cu radix = 10 (Decimal).

Excepție aruncată

  • NumberFormatException este aruncat prin această metodă dacă apare oricare dintre următoarele situații.

Amintiți-vă anumite puncte cheie asociate ambelor variante:

  1. Șirul poate fi nul sau de lungime zero
  2. Valoarea reprezentată de șir nu este o valoare de tip int
  3. În special pentru varianta parseInt(String s, int radix) a funcției:
    • Al doilea argument radix este fie mai mic decât Character.MIN_RADIX sau mai mare decât Character.MAX_RADIX
    • Orice caracter al șirului nu este o cifră a bazei specificate, cu excepția faptului că primul caracter poate fi semnul minus „-” („u002D”) sau semnul plus „+” („u002B”), cu condiția ca șirul să fie mai mare decât lungimea 1
  4. Dacă șirul tău are zerouri la început, metoda parseInt() le va ignora.

Cazuri de parseInt() Metoda

Să luăm un fragment de cod aleatoriu să înțelegem mai bine ilustrațiile.

Cazul 1: parseInt(20, 16)

returnează 32 , (2)*16^1 + (0)*16^0 = 32

Cazul 2: parseInt(2147483648, 10)

aruncă o excepție NumberFormatException

Cazul 3: parseInt(99, 8)

aruncă o excepție NumberFormatException
Motiv: 9 nu este o cifră acceptată a sistemului de numere octale

Cazul 4: parseInt(tocilari, 28)

aruncă o excepție NumberFormatException

Cazul 5: parseInt(geeks, 29)

returnează 11670324, Motiv: Sistemul de numere cu baza 29 poate avea cifre de la 0 la 9 urmate de caractere a,b,c... până la s

Cazul 6: parseInt(geeksforgeeks, 29)

aruncă o excepție NumberFormatException ca Motiv: rezultatul nu este un număr întreg.

Formatul numărului Excepții ale metodei parseInt().

Excepții cauzate de metoda parseInt() menționată mai jos:

Java




// Java Program to Demonstrate Working of parseInt() Method> // Where NumberFormatException is Thrown> // Main class> public> class> GFG {> > // Main driver method> > public> static> void> main(String args[])> > {> > // NumberFormatException> > String invalidArguments => ''> ;> > > // invalidArguments Error empty string> > // passed> > int> emptyString> > = Integer.parseInt(invalidArguments);> > > // The Converted Intger is out of bound> > // Too large to be called Integer> > int> outOfRangeOfInteger> > = Integer.parseInt(> 'geeksforgeeks'> ,> 29> );> > > // Domain Number System> > int> domainOfNumberSystem> > = Integer.parseInt(> 'geeks'> ,> 28> );> > // Print commands on console> > System.out.println(emptyString);> > System.out.println(outOfRangeOfInteger);> > System.out.println(domainOfNumberSystem);> > }> }>

Ieșire

În mod similar, putem converti șirul în orice alt tip de date primitive:

  1. parseLong(): parsează șirul la Long
  2. parseDouble(): parsează șirul la dublu Dacă dorim să convertim șirul într-un număr întreg fără a utiliza parseInt() , putem folosi valoarea() metodă . Are și două variante similare cu parseInt()
  3. Diferența dintre parseInt() și valueOf(): parseInt() parsează șirul și returnează tipul întreg primitiv. Cu toate acestea, valueOf() returnează un obiect Integer.

Notă: valueOf() folosește parseInt() intern pentru a converti în întreg.

O altă abordare pentru conversia unui șir în număr întreg

În afară de metoda parseInt() în Java, există o altă metodă pentru conversia String-ului în Integer. Mai jos este implementarea metodei valueOf(), adică

ValueOf() Metoda

Metoda Integer.valueOf() convertește un șir într-un obiect Integer. Să înțelegem asta printr-un exemplu.

Mai jos este implementarea metodei de mai sus:

Java




// Java Program to Demonstrate> // Working of valueOf() Method> // Main class> public> class> GFG {> > // Main driver method> > public> static> void> main(String args[])> > {> > // Custom wide-varied inputs to illustrate> > // usage of valueOf() method> > int> decimalExample = Integer.valueOf(> '20'> );> > int> signedPositiveExample = Integer.valueOf(> '+20'> );> > int> signedNegativeExample = Integer.valueOf(> '-20'> );> > int> radixExample = Integer.valueOf(> '20'> ,> 16> );> > int> stringExample = Integer.valueOf(> 'geeks'> ,> 29> );> > // Print statements> > System.out.println(decimalExample);> > System.out.println(signedPositiveExample);> > System.out.println(signedNegativeExample);> > System.out.println(radixExample);> > System.out.println(stringExample);> > }> }>

Ieșire

20 20 -20 32 11670324