Как получить значения из строки Java

Есть строка наподобие "1d3h". Числа могут быть разные, и в строке может не быть одной из частей (1d либо 3h). Мне нужно отдельно получить числа из этой строки. Я пробовал такой код:

    public static String numbers(String string) {
    
        int first = 0;
        int second = 0;
        
        String[] array = string.replace('d', ' ').replace('h', ' ').split(" ");
        
        first = Integer.parseInt(array[0]);
        second = Integer.parseInt(array[1]);
        
        return ("Первое число: " + first + " Второе число: " + second);
    }

Он работает если в строке есть обе части, но выдаёт ошибку если в строке только одна часть.


Ответы (1 шт):

Автор решения: Ilya Lisov

Вы пытаетесь получить оба числа, когда инициализируете first и second. Но в случае, когда в строке одно число, естественно, будет исключение. Поэтому сделайте проверку на наличие первого числа и второго числа.

public static String numbers(String string) {
    int first = 0;
    int second = 0;

    if(string.indexOf("d") != -1 && string.indexOf("h") != -1) {
        first = Integer.parseInt(string.substring(0, string.indexOf("d")));
        second = Integer.parseInt(string.substring(string.indexOf("d") + 1, string.indexOf("h")));
        return ("Первое число: " + first + " Второе число: " + second);
    } else if(string.indexOf("d") != -1) {
        first = Integer.parseInt(string.substring(0, string.indexOf("d")));
        return ("Первое число: " + first);
    } else if(string.indexOf("h") != -1) {
        second = Integer.parseInt(string.substring(0, string.indexOf("h")));
        return ("Второе число: " + second);
    }
    return "Нет чисел";
}

Вот один из возможных примеров реализации данной задачи. Если Вам помог мой ответ, то отметьте его.

→ Ссылка