W Javie podczas operacji na łańcuchach zdarzają się sytuacje, gdy musimy przekonwertować liczbę reprezentowaną jako ciąg na typ całkowity. Zwykle tak robimy, ponieważ możemy operować szerokim, elastycznym zestawem operacji na ciągach znaków. Metodą powszechnie stosowaną do konwersji ciągu znaków na liczbę całkowitą w Javie jest parseInt () z Klasa string .
W tym artykule zobaczymy, jak przekonwertować ciąg znaków na int w Javie.

tablica ciągów w języku c
Program do konwersji ciągu Java na int
Weźmy od razu przykład, aby przyzwyczaić się do działającej metody parseInt() :
Jawa
// 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);> >}> }> |
>
>Wyjście
20 20 -20 32 11670324>
Metoda parseInt() w Javie
Istnieją dwa warianty tej metody:
- parseInt(Ciąg s): Ta funkcja analizuje argument w postaci ciągu znaków jako dziesiętną liczbę całkowitą ze znakiem.
- parseInt(String s, int radix): Ta funkcja analizuje argument typu string jako liczbę całkowitą ze znakiem w podstawie określonej przez drugi argument.
Składnia parseInt
public static int parseInt(String str); public static int parseInt(String str, int radix);>
Parametry
- str.: S tring, który należy przekonwertować na liczbę całkowitą.
- źródło: jest używany podczas analizowania ciągu.
Typ zwrotu
- Obie metody konwertują ciąg na jego odpowiednik w postaci liczby całkowitej. Jedyną różnicą jest podstawa parametru. Pierwszą metodę można rozważyć z podstawą = 10 (dziesiętną).
Zgłoszono wyjątek
- Wyjątek NumberFormat jest zgłaszany tą metodą, jeśli wystąpi dowolna z następujących sytuacji.
Pamiętaj o pewnych kluczowych punktach związanych z obydwoma wariantami:
- Ciąg może mieć wartość null lub mieć zerową długość
- Wartość reprezentowana przez ciąg nie jest wartością typu int
- Specjalnie dla wariantu funkcji parseInt(String s, int radix):
- Podstawa drugiego argumentu jest albo mniejsza niż Character.MIN_RADIX, albo większa niż Character.MAX_RADIX
- Dowolny znak ciągu nie jest cyfrą określonej podstawy, z wyjątkiem tego, że pierwszym znakiem może być znak minus „-” („u002D”) lub znak plus „+” („u002B”) pod warunkiem, że ciąg znaków jest dłuższy niż długość 1
- Jeśli Twój String ma zera na początku, metoda parseInt() je zignoruje.
Przypadki Metoda parseInt().
Weźmy losowy fragment kodu, aby lepiej zrozumieć ilustracje.
Przypadek 1: parseInt(20, 16)
zwraca 32 , (2)*16^1 + (0)*16^0 = 32
Przypadek 2: parseInt(2147483648, 10)
zgłasza wyjątek NumberFormatException
Przypadek 3: parseInt(99, 8)
zgłasza wyjątek NumberFormatException
Powód: 9 nie jest akceptowaną cyfrą w systemie ósemkowymPrzypadek 4: parseInt(maniacy, 28)
zgłasza wyjątek NumberFormatException
Przypadek 5: parseInt(geeks, 29)
zwraca 11670324, Powód: System liczbowy o podstawie 29 może składać się z cyfr 0–9, po których następują znaki a, b, c… aż do s
Przypadek 6: parseInt(geeksforgeeks, 29)
zgłasza wyjątek NumberFormatException jako Powód: wynik nie jest liczbą całkowitą.
Wyjątki w formacie liczbowym metody parseInt().
Wyjątki spowodowane przez metodę parseInt() wspomnianą poniżej:
Jawa
// 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);> >}> }> |
>
>
Wyjście

Podobnie możemy przekonwertować ciąg na dowolny inny prymitywny typ danych:
- parseLong(): analizuje ciąg na Long
- parseDouble(): analizuje ciąg znaków w celu podwojenia Jeśli chcemy przekonwertować ciąg na liczbę całkowitą bez użycia parseInt() , możemy użyć wartość() metoda . Ma również dwa warianty podobne do parseInt()
- Różnica między parseInt() i valueOf(): parseInt() analizuje ciąg i zwraca pierwotną liczbę całkowitą. Jednak valueOf() zwraca obiekt typu Integer.
Notatka: valueOf() używa wewnętrznie parseInt() do konwersji na liczbę całkowitą.
Inne podejście do konwersji ciągu znaków na liczbę całkowitą
Oprócz metody parseInt() w Javie istnieje inna metoda konwersji ciągu znaków na liczbę całkowitą. Poniżej znajduje się implementacja metody valueOf().
Metoda valueOf().
Metoda Integer.valueOf() konwertuje String na obiekt Integer. Zrozumiemy to na przykładzie.
Poniżej implementacja powyższej metody:
Jawa
tablica bajtów na ciąg
// 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);> >}> }> |
>
>Wyjście
20 20 -20 32 11670324>