Оригінальна публікація: Java String to Int – How to Convert a String to an Integer

Рядкові об’єкти представлені у вигляді рядка символів.

Якщо ви знайомі з Java Swing, то у ньому є такі компоненти, як JTextField та JTextArea, які ми використовуємо для отримання вхідних даних із графічного інтерфейсу користувача. Він приймає вхідні дані як рядок.

Якщо ми хочемо створити простий калькулятор за допомогою Swing, нам потрібно зрозуміти, як конвертувати рядок в ціле число. Це призводить до питання: як можна конвертувати рядок в число?

В Java ми можемо використати Integer.valueOf() та Integer.parseInt(), щоб конвертувати рядок в ціле число.

1. Використайте Integer.parseInt(), щоб конвертувати рядок в ціле число

Цей метод повертає рядок як примітивний тип int. Якщо рядок не містить дійсного цілого числа, він кине NumberFormatException.

Кожного разу, коли ми конвертуємо рядок в число, потрібно подбати про цей виняток, помістивши код в блок try-catch.

Розглянемо приклад перетворення рядка в число за допомогою Integer.parseInt():

        String str = "25";
        try{
            int number = Integer.parseInt(str);
            System.out.println(number); // вивід = 25
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

Спробуємо зламати цей код, ввівши недійсне ціле число:

     	String str = "25T";
        try{
            int number = Integer.parseInt(str);
            System.out.println(number);
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

В коді вище ми спробували конвертувати 25T в ціле число. Це недійсний ввід. Таким чином, він повинен кинути NumberFormatException.

Ось вивід наведеного вище коду:

java.lang.NumberFormatException: For input string: "25T"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.parseInt(Integer.java:615)
	at OOP.StringTest.main(StringTest.java:51)

Далі ми розглянемо, як конвертувати рядок в ціле число за допомогою методу Integer.valueOf().

2. Використайте Integer.valueOf(), щоб конвертувати рядок в ціле число

Цей метод повертає рядок як цілочисельний об’єкт. Якщо глянути на документацію Java, Integer.valueOf() повертає цілочисельний об’єкт, який еквівалентний new Integer(Integer.parseInt(s)).

Розмістимо наш код всередині блоку try-catch, коли будемо використовувати цей метод. Розглянемо приклад використання методу Integer.valueOf():

        String str = "25";
        try{
            Integer number = Integer.valueOf(str);
            System.out.println(number); // вивід = 25
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

Тепер спробуємо зламати наведений вище код, ввівши недійсне ціле число:

        String str = "25TA";
        try{
            Integer number = Integer.valueOf(str);
            System.out.println(number); 
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }

Подібно до попереднього прикладу, наведений вище код кине виняток.

Ось вивід наведеного вище коду:

java.lang.NumberFormatException: For input string: "25TA"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.valueOf(Integer.java:766)
	at OOP.StringTest.main(StringTest.java:42)

Перед використанням вищезазначених методів ми також можемо створити метод для перевірки того, чи переданий рядок є числовим, чи ні.

Я створив простий метод для перевірки того, чи є переданий рядок числовим, чи ні.

public class StringTest {
    public static void main(String[] args) {
        String str = "25";
        String str1 = "25.06";
        System.out.println(isNumeric(str));
        System.out.println(isNumeric(str1));
    }

    private static boolean isNumeric(String str){
        return str != null && str.matches("[0-9.]+");
    }
}

Вивід:

true
true

Метод isNumeric() приймає рядок як аргумент. Спочатку він перевіряє, чи рядок null. Після цього ми використовуємо метод matches(), щоб перевірити, чи рядок містить цифри від 0 до 9 та крапку.

Це простий спосіб перевірити числові значення. Ви можете написати або знайти в Google більш просунуті регулярні вирази для захоплення чисел, залежно від вашої мети використання.

Перед конвертуванням рядка в ціле число краще перевірити, чи переданий рядок дійсно числовий.

Дякую, що прочитали.

Зображення публікації від 🇸🇮 Janko Ferlič на Unsplash

Ви можете зв’язатися зі мною на Medium.

Щасливого кодування!