Как получить значения из строки 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 "Нет чисел";
}
Вот один из возможных примеров реализации данной задачи. Если Вам помог мой ответ, то отметьте его.