Рядок для int в Java
У Java під час роботи з рядками бувають випадки, коли нам потрібно перетворити число, представлене як рядок, у цілий тип. Зазвичай ми робимо це, тому що можемо працювати з широким гнучким набором операцій над рядками. Метод, який зазвичай використовується для перетворення рядка в ціле число в Java parseInt () з Клас рядків .
У цій статті ми побачимо, як перетворити String на int у Java.
Програма для перетворення рядка Java в int
Давайте відразу візьмемо приклад, щоб звикнути до робочого методу 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);> > }> }> |
Вихід
20 20 -20 32 11670324
Метод parseInt() у Java
Існує два варіанти цього способу:
- parseInt(рядок s): Ця функція аналізує рядковий аргумент як десяткове ціле число зі знаком.
- parseInt(String s, int radix): Ця функція аналізує рядковий аргумент як ціле число зі знаком у основі, визначеній другим аргументом.
Синтаксис parseInt
public static int parseInt(String str); public static int parseInt(String str, int radix);
Параметри
- вул.: с string, який потрібно перетворити на ціле число.
- корінь: використовується під час аналізу рядка.
Тип повернення
- Обидва методи перетворюють рядок у його цілочисельний еквівалент. Єдина відмінність полягає в параметрі radix. Перший метод можна розглядати з основою = 10 (Decimal).
Створено виняток
- NumberFormatException викидається цим методом, якщо виникає будь-яка з наведених нижче ситуацій.
Пам’ятайте про певні ключові моменти, пов’язані з обома варіантами:
- Рядок може бути нульовим або мати нульову довжину
- Значення, представлене рядком, не є значенням типу int
- Спеціально для варіанту функції parseInt(String s, int radix):
- Основа другого аргументу менша за Character.MIN_RADIX або більша за Character.MAX_RADIX
- Будь-який символ рядка не є цифрою вказаної основи, за винятком того, що перший символ може бути знаком мінус '-' ('u002D') або знаком плюс '+' ('u002B') за умови, що рядок є довший за довжину 1
- Якщо ваш рядок має початкові нулі, метод parseInt() ігноруватиме їх.
Випадки Метод parseInt().
Давайте візьмемо випадковий фрагмент коду, щоб краще зрозуміти ілюстрації.
Випадок 1: parseInt(20, 16)
повертає 32 , (2)*16^1 + (0)*16^0 = 32
Випадок 2: parseInt(2147483648, 10)
створює виняток NumberFormatException
Випадок 3: parseInt(99, 8)
створює виняток NumberFormatException
Причина: 9 не є прийнятною цифрою вісімкової системи численняВипадок 4: parseInt(гіки, 28)
створює виняток NumberFormatException
Випадок 5: parseInt(geeks, 29)
повертає 11670324, Причина: Система числення з основою 29 може містити цифри 0-9, за якими йдуть символи a,b,c… до s
Випадок 6: parseInt(geeksforgeeks, 29)
створює виняток NumberFormatException як Причина: результат не є цілим числом.
Винятки числового формату для методу parseInt().
Винятки, спричинені згаданим нижче методом parseInt():
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);> > }> }> |
Вихід
Подібним чином ми можемо перетворити рядок на будь-який інший простий тип даних:
- parseLong(): аналізує рядок на Long
- parseDouble(): аналізує рядок на подвійне значення, якщо ми хочемо перетворити рядок на ціле число без використання parseInt() , ми можемо використовувати valueOf() метод . Він також має два варіанти, подібні до parseInt()
- Різниця між parseInt() і valueOf(): parseInt() аналізує рядок і повертає примітивний цілочисельний тип. Однак valueOf() повертає цілочисельний об’єкт.
Примітка: valueOf() використовує parseInt() внутрішньо для перетворення в ціле число.
Інший підхід для перетворення рядка в ціле число
Крім методу parseInt() в Java існує ще один метод для перетворення рядка в ціле число. Нижче наведено реалізацію методу valueOf().
Метод valueOf().
Метод Integer.valueOf() перетворює рядок на об’єкт Integer. Розберемося в цьому на прикладі.
Нижче наведено реалізацію вищезазначеного методу:
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);> > }> }> |
Вихід
20 20 -20 32 11670324