logo

Cadena a int a Java

A Java, mentre operem amb cadenes, hi ha vegades que necessitem convertir un nombre representat com una cadena en un tipus enter. Normalment fem això perquè podem operar amb un ampli conjunt flexible d'operacions sobre cadenes. El mètode utilitzat generalment per convertir String a Enter a Java és parseInt () del Classe de corda .

En aquest article, veurem com convertir una cadena a int a Java.



Cadena de Java a Int

Programa per convertir la cadena Java a int

Prenguem un exemple immediatament per acostumar-nos al mètode parseInt() de treball:

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);> >}> }>

>

>

Sortida

20 20 -20 32 11670324>

Mètode parseInt() en Java

Hi ha dues variants d'aquest mètode:

  1. parseInt(String s): Aquesta funció analitza l'argument de la cadena com un nombre enter decimal amb signe.
  2. parseInt(String s, int radix): Aquesta funció analitza l'argument de la cadena com un nombre enter amb signe a la base especificada pel segon argument.

Sintaxi de parseInt

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

Paràmetres

  • carrer: S tring que s'ha de convertir en un nombre enter.
  • radix: s'utilitza mentre s'està analitzant la cadena.

Tipus de retorn

  • Ambdós mètodes converteixen la cadena en el seu equivalent enter. L'única diferència és la del paràmetre radix. El primer mètode es pot considerar amb radix = 10 (Decimal).

Excepció llançada

  • NumberFormatException es llança per aquest mètode si es produeix alguna de les situacions següents.

Recordeu alguns punts clau associats amb ambdues variants:

  1. La cadena pot ser nul·la o de longitud zero
  2. El valor representat per la cadena no és un valor de tipus int
  3. Específicament per a la variant parseInt(String s, int radix) de la funció:
    • El segon argument radix és més petit que Character.MIN_RADIX o més gran que Character.MAX_RADIX
    • Qualsevol caràcter de la cadena no és un dígit de la base especificada, tret que el primer caràcter pot ser un signe menys '-' ('u002D') o un signe més '+' ('u002B') sempre que la cadena sigui més llarg que la longitud 1
  4. Si la vostra cadena té zeros inicials, el mètode parseInt() els ignorarà.

Casos de Mètode parseInt().

Prenem un fragment de codi aleatori per comprendre millor les il·lustracions.

Cas 1: parseInt(20, 16)

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

Cas 2: parseInt(2147483648, 10)

llança una NumberFormatException

Cas 3: parseInt(99, 8)

llança una NumberFormatException
Motiu: 9 no és un dígit acceptat del sistema de numeració octal

Cas 4: parseInt(geeks, 28)

llança una NumberFormatException

longitud de la cadena java

Cas 5: parseInt(geeks, 29)

retorna 11670324, Motiu: El sistema de numeració amb base 29 pot tenir dígits del 0 al 9 seguits dels caràcters a,b,c... fins a s

Cas 6: parseInt(geeksforgeeks, 29)

llança una NumberFormatException com a Motiu: el resultat no és un nombre enter.

Format de nombre Excepcions del mètode parseInt().

Excepcions causades pel mètode parseInt() esmentat a continuació:

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);> >}> }>

>

>

Sortida

De la mateixa manera, podem convertir la cadena a qualsevol altre tipus de dades primitiu:

  1. parseLong(): analitza la cadena a Long
  2. parseDouble(): analitza la cadena per duplicar Si volem convertir la cadena en un enter sense utilitzar parseInt() , podem utilitzar el valor de() mètode . També té dues variants similars a parseInt()
  3. Diferència entre parseInt() i valueOf(): parseInt() analitza la cadena i retorna el tipus d'enter primitiu. Tanmateix, valueOf() retorna un objecte Enter.

Nota: valueOf() utilitza parseInt() internament per convertir-lo en enter.

Un altre enfocament per convertir una cadena a enter

A part del mètode parseInt() a Java, hi ha un altre mètode per convertir String a Enter. A continuació es mostra la implementació del mètode valueOf().

valueOf() Mètode

El mètode Integer.valueOf() converteix una cadena en un objecte Integer. Entenem-ho amb un exemple.

A continuació es mostra la implementació del mètode anterior:

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);> >}> }>

>

>

Sortida

20 20 -20 32 11670324>